Linux C 网络基础

为什么需要网络通信?

进程间通信解决的是本机内通信

网络通信解决的是任意不同机器的通信

实现网络通信需要哪些支持

1.通信设备:网卡(PC机自带);                 路由器和交换机;                 光纤、电缆和基站

2.通信协议:

2.1.操作系统自带协议栈(Linux的特点:丰富的网络协议)

2.2.裸机开发需要独立的协议栈

3.简单网络通信只需要学会系统API

TCP/IP协议栈

什么是通信协议?作用?

OSI七层网络模型

Linux四层网络模型

链路层

物理层

通信介质的信号到数字信号(二进制0101)转换——电信号

数据链路层

局域网之间计算机通信通过mac地址(物理网卡)通信——交换机

MAC地址

1.Medium Access Control,直译为介质访问控制,它通常被固化在每个以太网网卡
2.MAC(硬件)地址长48位(6字节),采用十六进制格式【由生产厂商设置,与硬件相关,不会轻易修改】


交换机

1.是一种用于电(光)信号转发的网络设备。它可以为接入交换机的任意两个网络节点提供独享的电信号通路

2.交换机的工作原理

2.1交换机根据收到数据帧中的源MAC地址建立该地址同交换机端口的映射,并将其写入MAC地址表中

2.2交换机将数据帧中的目的MAC地址同已建立的MAC地址表进行比较,以决定由哪个端口进行转发

2.3如数据帧中的目的MAC地址不在MAC地址表中,则向所有端口转发。这一过程称为泛洪(flood)

3.交换机的功能与作用

学习MAC地址

转发数据帧

连接不同网络

划分局域网

网络层

ip地址:实际上是32位二进制数()     【IPV4

子网掩码:与ip相与,得到结果相等的就算同一个子网

路由器(网关):不同子网的ip地址相通信【协议之间的转换】

交换机只有LAN口,只能是实现局域网通信;

   路由器比交换机多了个WAN口(连接到公网(宽带、互联网))】

公网IP是动态分配的,已经被手机电脑等用完了,改天再看,就不一样了,用时分配,不用就收回:

私网IP:

本地回环地址:127.0.0.1

本地回环地址:被用于通过本地环回网络接口,来访问本机运行的服务,并且将会绕过任何物理网纳接口硬件【加入本机运行了一个服务器,想要访问这个服务器,就访问这个地址】

如何解决IP地址荒?

ipv4(32位)升级到ipv6(128位);

网络地址转换NAT(network address translation):将内网ip转化为公网ip


子网掩码的作用:

1.决定一个网段的大小(可用ip的数量)
2.同一个网段的ip地址,才能直接相互通信,不同网段的ip地址,需要路由器才能相互通信!

ARP协议

"Address Resolution Protocol”(地址解析协议)
把ip地址解析成mac地址〈物理地址,全球唯一)(局域网通信必须通过MAC地址)

《ARP攻击:伪造IP赋值和MAC地址产生ARP欺骗》

ICMP协议—用来检测网络通信故障和实现链路追踪,最典型的应用就是ping和tracerooute

《死亡ping》

传输层

让不同的应用程序,同时使用网络

TCP/UDP:TCP:可靠,速度慢;UDP:不可靠,速度快;

端口(让不同的应用程序,同时使用网络)

给一个ip发消息,怎么确定是哪个应用程序接收(只有一个网卡),是由传输层决定的,就得知道这个应用程序的端口号

应用层

【会话层:控制发报的数据;        表示层:文件格式;        应用层:应用程序的使用;        】

传输层

TCP协议

一、特点:面向连接、可靠的字节流传输
二、字节流传输;
三、TCP的报文格式:

端口号:确定和机器上按个应用程序通信

1.周知/标准端口号,它的范围是0 - 1023。在Unix的操作系统上,使用这些端口之一需要超级用户操作权限

2.注册端口号,范围是1024 -49151。是用于IANA 注册服务的注册端!
3.私有端口号,范围是49152- 655R5。未正式指定用于任何特定服务,可用于任何目的。
这些端口也可以用作临时端口,在生机上运行的软件可以使用这些端口根据需要动态创建通信终结点

序列号seq(随机生成)

TCP表示位:

SYN:建立链接

ACK:回应标识

FIK:断开链接

PSH:数据包

URG:紧急指针

RST :重置(重传)

检验方式

奇偶校验Parity Check
bcc异或按验法(block check character)
crc循环元余校验(Cyclic Redundancy Check)

md5校验和数字签名
海明码校验

 

四、可靠传输
4.1停止等待协议

我发送一个数据包给你,然后你跟我回复收到,我继续发送下一个数据句
问题:网络环境不可靠,导致每一次发送的数据包可能会丢失,如果机器A发送了数据包丢失了,那么机器B永远接收不到数据,机器A永远在等待


4.2 超时重传

当机器A发出一个数据包时便开始计时,时间到还没收到确认回复,就可以认为是发生了丢包,便再次发送,也就是重传
问题:如果原先的数据包并没有丢失,只是在网络中待的时间比较久,这个时候机器B会受到两个数据包,无法辨别

4.3 序号和确认号

表示发送方数据第一个字节的编号,和接收方期待的下一份数据的第一个字节的编号

4.4 连续ARQ协议:

停止等待协议已经可以满足可靠传输了,但有一个致命缺点:效率太低
源源不断地发送,接收方源源不断收到数据之后,逐一进行确认回复。这样便极大地提高了效率

问题1:发送太快导致接收方无法接受,那么只是频繁进行重传,浪费了网络资源

问题2:如何处理丢包情况——选择确认SACK——在TCP报文的选项字段,可以设置已经收到的报文段,每一个报文段需要两个边界来进行确定

4.5 TCP的流量控制:滑动窗口


4.5.1.发送方需要根据接收方的缓冲区大小,设置自己可发送窗口大小,处于窗口内的数据表示可发送

4.5.2当窗口内的数据接收到确认回复时,整个窗口向后移动,窗口外的数据不可发送

五、拥塞控制

避免网络过分拥挤导致丢包严重,网络效率低

解决方法:调整滑动窗口大小——实现流量控制——实现拥塞控制

重点慢开始,快恢复、快重传、拥塞避免

六、面向连接
6.1连接

不是指实实在在的连接,而是通信双方彼此之间的一个记录

TCP是一个全双工通信,也就是可以互相发送数据,所以双方都需要记录对方的信息(源IP、源端口号、目标IP、目标端口号)

6.2 建立连接

三次握手:

因为TCP是全双工,所以得是三次握手,而非二次,不然server端接受不到client的ack

6.2.1拒绝服务攻击(DOS)

通过各种技术手段导致目标系统进入拒绝服务状态的攻击

6.2.2分布式拒绝服务攻击(DDOS)

利用合理的请求造成资源过载,导致服务不可用,从而造成服务器拒绝正常流量服务

SYN Flood攻击

6.3断开连接

四次挥手

为什么是四次——(因为是全双工)

1.防止丢包导致的,被动关闭端收不到最后一次挥手而无法关闭

2.也防止被动关闭段要给主动关闭段还要发消息

七、粘包与粘包

UDP协议

叫做用户数据报协议

特点:无连接部可靠传输

UDP报文格式

UDP的功能

1.校验数据报是否发生错误

2.区分不同的进程通信

优缺点

1.无法保证消息完整、正确到达,UDP是一个不可靠的传输协议

2.缺少拥塞控制容易互相竞争资源导致网络系统瘫痪

                                                                             ||

1.效率更快;不需要建立连接以及拥塞控制
2.连接更多的客户;没有连接状态,不需要为每个客户创建缓存等
3.分组首部字节少,开销小;TCP首部固定首是20字节,而UDP只有8字节;更小的首部意味着更大比例的数据部分58%
4.在一些需要高效率允许可限度误差的场景下可以使用。如直播场景,
5.可以进行广播;UDP并不是面向连接的,所以可以同时对多个进程进行发送报文

 

适用场景

视频直播

DNS

RIP路由选择协议

应用层

DNS-域名系统

解决IP地址复杂难以记忆的问题,存储并完成自己所管辖范围内主机的域名到IP地址的映射

域名解析的顺序

1.浏览器缓存
2.找本机的hosts文件
3.路由缓存
4.找DNS服务器(本地域名、顶级域名、根域名)->迭代解析、递归查询

域名由点、字母和数字组成

顶级域(com,cn,net,gov,org)

二级域(baidu,taobao,qq,alibaba)

三级域(www)

DHCP-动态主机设置协议

是一个局域网协议,是应用UDP协议的应用层协议。

作用:为临时接入局域网的用户自动分配IP地址
 

HTTP (HyperText Transfer Protocol:超文本传输协议)

【TCP,端口80】

例如:https

C/S架构  vs   B/S架构

C/S架构:客户端/服务器——qq、电脑游戏... ...

B/S:浏览器游戏、Web的qq ... ...

抓包工具——Wireshark

抓包工具之wireshark安装和使用_wireshark导入密钥_恒悦sunsite的博客-CSDN博客icon-default.png?t=N7T8https://blog.csdn.net/carefree2005/article/details/120840566

wireshark:优点在于,可以在windows、Linux和Mac OS

作业:找二三十道网络编程的面试题

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/84530.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在Scrapy框架中使用隧道代理

今天我要和大家分享一些实战经验,教你如何在Scrapy框架中使用隧道代理。如果你是一个热爱网络爬虫的开发者,或者对数据抓取和处理感兴趣,那么这篇文章将帮助你走上更高级的爬虫之路。 首先,让我们简单介绍一下Scrapy框架。Scrapy…

【计算机网络】——应用层

// 图片取自王道 仅做交流学习 一、基本概念 应用层概述 协议是 网络层次模型 中多台主机之间 同层之间进行通信的规则。是一个水平概念 垂直空间上,向下屏蔽下层细节,向上提供服务接入,多台主机之间同层之间形成一条逻辑信道。 应用层的…

编译ctk源码

目录 前景介绍 下载The Common Toolkit (CTK) cmake-gui编译 vs2019生成 debug版本 release版本 前景介绍 CTK(Common Toolkit)是一个用于医学图像处理和可视化应用程序开发的工具集,具有以下特点: 基于开源和跨平台的Qt框…

Spring 6.0 新特性

文章目录 Spring的发展历史AOTGraalVMSpringBoot实战AOTRuntimeHints案例分析RuntimeHintsRegistrar SpringBoot中AOT核心代码 Spring的发展历史 AOT Spring 6.0的新特性Ahead of Time(AOT)编译是一种技术,可以提前将Spring应用程序编译成原…

【SpringCloud】微服务技术栈入门1 - 远程服务调用、Eureka以及Ribbon

目录 远程服务调用RestTemplate Eureka简要概念配置 Eureka 环境设置 Eureka ClientEureka 服务发现 Ribbon工作流程配置与使用 Ribbon饥饿加载 远程服务调用 RestTemplate RestTemplate 可以模拟客户端来向另外一个后端执行请求 黑马给出的微服务项目中,有两个 …

yolov5使用最新MPDIOU损失函数,有效和准确的边界盒回归的损失,优于GIoU/EIoU/CIoU/EIoU(附代码可用)

文章目录 1. 论文1.1. 主要目的1.2. 设计思路2 代码3.总结1. 论文 MPDIoU: A Loss for Efficient and Accurate Bounding Box Regression (一个有效和准确的边界框损失回归函数) 论文地址 1.1. 主要目的 当预测框与边界框具有相同的纵横比,但宽度和高度值完全不同时,大多数…

20230918使用ffmpeg将mka的音频转为AAC编码以便PR2023来识别

20230918使用ffmpeg将mka的音频转为AAC编码以便PR2023来识别 2023/9/18 20:58 ffmpeg -i 1.mka -acodec aac 1.mp4 ffmpeg -i 1.mka -vn -c:a aac 2.aac ffmpeg -i 1.mka -vn -c:a aac 2.MP4 ffmpeg mka 转 aacmp4 https://avmedia.0voice.com/?id42526 用ffmpeg将mka格式转化…

云端IDE的技术选型1

背景 考虑到以下几点,准备给低代码平台开发一套云端的IDE: 桌面端IDE:vs code 或 idea,都有需要开发人员安装ide,以及配置环境很多时候,配置开发环境是个非常曲折过程,经常出现版本不匹配&…

【分布式计算】副本数据Replicated Data

作用:可靠性、高性能、容错性 问题:如何保持一致、如何更新 问题:存在读写/写写冲突 一个简单的方法就是每个操作都保持顺序,但是因为网络延迟会导致问题 Data-centric models: consistency model?? ??? 读取时&#xff0c…

深入理解WPF中MVVM的设计思想

近些年来,随着WPF在生产,制造,工业控制等领域应用越来越广发,很多企业对WPF开发的需求也逐渐增多,使得很多人看到潜在机会,不断从Web,WinForm开发转向了WPF开发,但是WPF开发也有很多…

图像处理软件Photoshop 2024 mac新增功能

Photoshop 2024 mac是一款图像处理软件的最新版本。ps2024提供了丰富的功能和工具,使用户能够对照片、插图、图形等进行精确的编辑和设计。 Photoshop 2024 mac软件特点 快速性能:Photoshop 2024 提供了更快的渲染速度和更高效的处理能力,让用…

MyBatis 缓存模块

文章目录 前言缓存的实现Cache接口PerpetualCache 缓存的应用缓存对应的初始化一级缓存二级缓存第三方缓存 前言 MyBatis作为一个强大的持久层框架,缓存是其必不可少的功能之一,Mybatis中的缓存分为一级缓存和二级缓存。但本质上是一样的,都…

【异常错误】detected dubious ownership in repository ****** is owned by: ‘

今天在github git的时候,突然出现了这种问题,下面的框出的部分一直显示: detected dubious ownership in repository at D:/Pycharm_workspace/SBDD/1/FLAG D:/Pycharm_workspace/SBDD/1/FLAG is owned by: S-1-5-32-544 but the current use…

多线程的学习第二篇

多线程 线程是为了解决并发编程引入的机制. 线程相比于进程来说,更轻量 ~~ 更轻量的体现: 创建线程比创建进程,开销更小销毁线程比销毁进程,开销更小调度线程比调度进程,开销更小 进程是包含线程的. 同一个进程里的若干线程之间,共享着内存资源和文件描述符表 每个线程被独…

外国固定资产管理系统功能有哪些

很多公司都在寻找提高自己资产管理效益的方法。为了满足这一要求,国外的固定资产管理系统已经发展成多种形式。以下是国外一些常见的固定资产管理系统的特点:自动化和智能化:许多现代固定资产管理系统采用自动化和数字化技术,以简化流程,减少…

网络编程day04(网络属性函数、广播、组播、TCP并发)

今日任务 对于newfd的话&#xff0c;最好是另存然后传入给分支线程&#xff0c;避免父子线程操作同一个文件描述符 1.广播&#xff1a; 接收端 代码&#xff1a; #include <stdio.h> #include <string.h> #include <stdlib.h> #include <sys/types.h&…

Databend 开源周报第 111 期

Databend 是一款现代云数仓。专为弹性和高效设计&#xff0c;为您的大规模分析需求保驾护航。自由且开源。即刻体验云服务&#xff1a;https://app.databend.cn 。 Whats On In Databend 探索 Databend 本周新进展&#xff0c;遇到更贴近你心意的 Databend 。 理解 SHARE END…

大数据(九):数据可视化(一)

专栏介绍 结合自身经验和内部资料总结的Python教程&#xff0c;每天3-5章&#xff0c;最短1个月就能全方位的完成Python的学习并进行实战开发&#xff0c;学完了定能成为大佬&#xff01;加油吧&#xff01;卷起来&#xff01; 全部文章请访问专栏&#xff1a;《Python全栈教…

Linux_9_网络协议和管理

目录 1网络基础1.1 网络概念1.2常见的网络物理组件1.3网络应用程序1.3.1各种网络应用1.3.2应用程序对网络的要求 1.4网络的特征1.4.1速度(带宽)1.4.2网络拓扑 1.5网络1.5.1网络准和分层1.5.2开放系统互联OSI1.5.3网络的通信过程1.5.3.1数据封装和数据解封1.5.3.2协议数据单元PD…

基于javaweb的顶岗实习管理系统(jsp+servlet)

系统简介 本项目采用eclipse工具开发&#xff0c;jspservletjquery技术编写&#xff0c;数据库采用的是mysql&#xff0c;navicat开发工具。 三个角色&#xff1a;管理员&#xff0c;教师&#xff0c;学生 模块简介 管理员&#xff1a; 1、登录 2、学生管理 3、公告管理 …