计算机网络

网络分层

物理层

连接不同的物理设备,用来传输比特流
eg:双绞线、同轴电缆、光纤、红外线、无线介质、激光等。 网卡

数据链路层

将上层数据封装成帧、用MAC地址访问媒介、差错检测。相邻物理节点传输
:数据链路层数据的基本单位。发送端在网络层的一段数据块前后添加特定标记形成帧。
差错检测:循环冗余校验码CRC

MAC地址

MAC地址:物理地址、硬件地址、设备地址。每个设备都有一个唯一的MAC地址。48位(6个字节),用12个16进制数表示
查看MAC地址:ipconfig/all
以太网协议:是一种广泛使用的局域网技术,应用于数据链路层,可以完成相邻设备的数据帧传输。
MTU:最大传输单元。数据链路层的最大MTU为1500字节,最小MTU为64字节。

网络层

提供IP地址,将数据设法从源端经过若干个节点传送到目的端,为传输层提供最基本的端到端的数据传输服务。(路径选择、路由及逻辑寻址)
具体功能:寻址、路由选择、连接建立、保持和终止。

IP协议

IP协议:计算机网络相互连接进行通信的协议,屏蔽了物理网络之间的差异。解决了在虚拟网络中数据报传输路径的问题。路径选择
IP地址:每个计算机设备的唯一编号。32位(4个字节),用4个10进制数表示。

IP地址的分类

子网

子网的划分:193.10.10.0 是C类地址,最大主机号为254,把IP地址的第25位看做子网号。

子网的掩码快速判断某个IP的网络号

子网掩码和IP地址一样,都是32位;由连续的1和连续的0组成,某一个子网的掩码有**网络号位数**个连续的1。
A:8个1+24个0
B:16个1+16个0
C:24个1+8个0

例 :IP地址:193.10.10.6,通过子网掩码255.255.255.128得到它的网络号
193.10.10.6 11000001.00001010.00001010.00000110
255.255.255.128 11111111.11111111.11111111.10000000
二进制做与运算 11000001.00001010.00001010.00000000 193.10.10.0

无分类编址CIDR:没有A、B、C类网络号和子网划分的概念
将网络前缀相同的IP地址称为一个“CIDR地址块
在这里插入图片描述
网络前缀是任意位数的,不受限于任何一类网络地址
相比子网划分更加灵活

斜线记法:193.10.10.129/25 :网络前缀有25位
11000001.00001010.00001010.10000001

IP数据报

在这里插入图片描述

版本:占4位,指IP协议的版本,当前主流版本是4,即Ipv4
首部位长度:占4位,最大十进制数值为15,单位是32位(4个字节),即最大15*4=60字节
总长度:占16位,最大数值为65535。总长度=IP首部+IP数据
TTL:占8位,表示IP数据报文在网络中的寿命,每经过一个设备,TTL-1,当TTL=0时,网络设备丢弃该报文。
协议:占8位,表示IP数据所携带的具体数据是什么协议的(TCP、UDP)
首部校验和:占16位,校验IP首部是否有出错

IP协议的转发流程

路由表简介 :计算机A发出数据到计算机C

 计算机A通过网卡发出数据帧
 数据帧到达路由器,路由器取出前6个字节(MAC地址)
 路由器匹配MAC地址表,找到对应的网络接口(计算机C)
 路由器往该接口发送数据帧

IP协议的转发流程(网络层) :计算机A需要跨设备把数据传到计算机C

 A发出目的地为C的IP数据报,查询路由表发现下一跳为E
 A将数据报发送给E
 E查询路由表发下下一跳为F,将数据报发送给F
 F查询路由表发现目的地C直接连接,将数据报发送给C

IP协议的转发流程(结合网络层和数据链路层) :计算机A需要跨设备把数据传到计算机C

 A发出目的地为C的IP数据报,查询路由表发现下一跳为E
 A将IP数据报交给数据链路层,并告知目的MAC地址是E
 数据链路层填充源MAC地址A和目的MAC地址E
 数据链路层通过物理层将数据发送给E
 E的数据链路层收到数据帧,把数据帧交给网络层
 E查询路由表,发现下一跳为F
 E把数据报交给数据链路层,并告知目的MAC地址为F
 E的数据链路层封装数据帧发送
 F的数据链路层接收到数据帧,把数据帧交给网络层
 F查询路由表,发现下一跳为C
 F把数据交给数据链路层,并告知目的MAC地址为C
 F的数据链路层封装数据帧并发送

ARP协议

如果ARP缓存表里没有缓存IP地址和MAC地址的映射关系
也就是E检查MAC地址表,发现没有C的信息,E将广播A的数据包到除A以外的端口,E将收到来自B、C的回应,并将地址记录。

ARP协议 :地址解析协议,把网络层32位IP地址→数据链路层48位MAC地址
RARP协议 :逆地址解析协议,把数据链路层48位MAC地址→网络层32位IP地址
ARP缓存表 :左列是IP地址,右列是其对应的MAC地址。即IP地址和MAC地址的映射关系。是ARP协议和RARP协议高效运行的关键。其中的记录不是永久有效的,有一定的期限限制(IP地址会变化)
查看ARP缓存表:arp -a

ARP报文:总共28个字节

帧类型:0x0806
ARP首部
硬件类型:硬件地址的类型,1表示以太网地址。2个字节
协议类型:协议地址的类型,0x0800表示IP地址。2个字节
硬件地址长度1、协议地址长度1、操作类型:2个字节
发送端硬件(以太网)地址:6个字节
发送端IP地址:4个字节
目的端硬件(以太网)地址:6个字节
目的端IP地址:4个字节

ICMP协议

ICMP协议:网际控制报文协议,可以报告错误信息或异常情况。辅助IP协议

传输层

实现网络不同主机上用户进程之间的数据通信。可靠与不可靠的传输,传输层的错误检测、流量控制等。

TCP和UDP协议的区别

UDP是无连接协议--------TCP是面向连接协议
UDP不能保证可靠的数据交付--------TCP提供可靠的传输服务
UDP是面向报文传输的---------TCP是面向字节流的
UDP传输速度快-------TCP传输速度慢
UDP没有拥塞控制---------TCP协议有拥塞控制
UDP首部开销很小

可靠传输的基本原理

用可靠传输协议实现可靠传输:停止等待协议、连续ARQ协议(自动重传请求)

停止等待协议

就是在三种情况下(发送的消息在路上丢失、确认的消息在路上消失、确认的消息很久才到),通过超时重传,保证可靠传输的机制

发送方发送消息给接收方,然后停止等待接收方返回确认信息。此前接收方也在等待发送方发送消息给它。(超时定时器:每发送一个消息,都需要设置一个定时器,计算消息过期的时间,超过这个时间还没有收到确认消息,就判定为过期)
在这里插入图片描述
发送方给接收方发送的消息1发生丢失,就等不到接收方的确认消息,此时就会重新发送这个消息1,称为超时重传。超时重传是保证停止等待协议可靠传输的方法。

在这里插入图片描述
同理,当接收方发送确认消息时发生丢失的情况,或者确认消息在很久很久之后才能到,发送方在一段时间后没有收到确认消息,也会重新发送消息。
停止等待协议是最简单的可靠传输协议,但它对信道的利用效率不高(因为它每发送一个消息,就要等待一个确认消息

连续ARQ(自动重传请求)协议

根据停止等待协议的缺点:单个发送和确认效率低 改进的协议。
在这里插入图片描述
使用批量发送多个数据【滑动窗口:一次批量发送的大小】的方法,前面数据的确认消息收到时,将滑动窗口向前移动【收到几个确认消息,移动几个】。

累计确认:只要收到某个数据的确认消息,那就说明这个数据之前的所有数据的确认消息都收到了。即使确认丢失,也不必重传。减少了确认消息的数量,提高了网络效率。
缺点是不能向发送方反映接收方已经正确接收到的数据信息。
G0-back-N(回退N):表示需要退回来重传已经发送过的N个数据

TCP协议的可靠传输

可靠传输应该满足的要求:

(1)传输的信道不产生差错
(2)保证传输数据的正确性,无差错、不丢失、不重复、按序达到
TCP的可靠传输基于连续ARQ协议的。TCP滑动窗口以字节为单位。

TCP的可靠传输的原因有三点:

(1)首先:采用三次握手来建立TCP连接,四次挥手来释放TCP连接,从而保证传输信道的可靠。
(2)然后:采用连续ARQ协议Go-back-N、回退N)保证数据传输的正确性,使用滑动窗口来保证接收方能及时处理所接收到的数据,进行流量控制

滑动窗口协议的规则:(1)凡是已经发送过的数据,在未收到确认之前,都必须暂时保留,以便在超时重传时使用;(2)只有当发送方收到了接收方的确认序号时,发送方窗口才可以向前滑动几个序号;(3)当发送方发送的数据经过一段时间没有收到确认(超时计时器),就要使用回退N步协议,回到最后收到确认号的地方,重新发送这部分数据。
流量控制让发送端发送数据速率不要太快;使用滑动窗口实现。

如果接收方给发送方的窗口大小的消息丢失,发送方就会一直处于等待状态,形成死锁。为了避免死锁,使用坚持定时器
坚持定时器当发送方接收到窗口为0的消息时,则启动坚持定时器;
坚持定时器每隔一段时间就会发送一个窗口探测报文,询问接收方的窗口大小有没有增大

(3)最后:TCP使用慢启动拥塞避免快重传快恢复来进行拥塞控制,避免网络拥塞。

拥塞控制是指在网络传输数据过程中,传输的数量太多,由于储存转发节点的资源有限导致网络传输性能下降。为防止过多数据注入网络,使网络中的路由器或链路不过载,使用拥塞控制。
(1)慢启动算法指不要一开始就发送大量的数据,而是由小到大逐渐增加(指数增加)发送数据量,开始设置拥塞窗口大小cnwd=1,每收到一个报文确认就加1。增加到慢启动阈值ssthresh(为防止cnwd过大引起网络拥塞)时,开始使用拥塞避免算法。
(2)拥塞避免算法在拥塞避免阶段,只要网络不拥塞,就将拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。
(3)当网络发生拥塞时,把ssthresh值减小为拥塞前ssthresh值的一半,拥塞窗口重新设置为1,再从步骤(1)开始执行
(4)快速重传指的是接收方在收到一个失序的报文段后就立即发出重复确认(为了使发送方及早知道报文段有没有到达对方),而不要等到自己发送数据时捎带确认。发送方只要一连收到3个重复确认就应该立即重传对方尚未收到的报文段,而不必等待设置的重传计数器时间到期
(5)快速恢复当发送方连续收到3个重复确认,就执行“乘法减小”算法,把慢启动阈值更新为此时拥塞窗口阈值的一半(为了预防网络拥塞)。接下来不执行慢启动,而是把cwnd值设置为慢启动阈值减半后的值,开始执行拥塞避免算法,使cwnd缓慢线性增大在这里插入图片描述

流量控制和拥塞控制的区别:

流量控制考虑点对点的通信量的控制,考虑接收方可能的接收性能达不到发送的量
拥塞控制考虑整个网络,是全局性的考虑

TCP协议的三次握手,原因?


TCP标记说明:

ack : 确认号字段。占4个字节,是期望收到对方的下一个报文段数据的第一个字节的序号。若ack=N,表示到序号N-1为止的所有数据都已经正确收到
ACK :确认位。表示你发来的请求我已经接收到。只有当ACK=1时确认号字段ack才会生效。ACK=0时,ack无效
SYN : 同步位。SYN=1表示这是一个连接请求或连接接收报文。当SYN=1且ACK=0时,这是一个连接请求报文。对方若同意连接,则在响应报文中使用SYN=1且ACK=1,。

第一次握手:

发送端给接收端发送建立连接请求报文 ,其中SYN(同步位)=1,seq(序列号)=x;连接求情报文不携带数据,但要消耗一个序列
当报文段的SYN=1且ACK=0时,表示请求建立连接;
发送完之后,客户端进入同步已发送状态

第二次握手:

接收端接收到请求报文之后,给发送端发送确认报文段。其中SYN=1,ACK(确认位)=1,ack=x+1,同时设置自己的初始序列号seq=y。确认报文不携带数据,消耗一个序列
当报文段的SYN=1且ACK=1时,表示这是一个确认建立连接的响应报文段。
seq是本身数据包的序列号,ack是期望下次收到对方发送的数据包序列号
接收端发送完之后,进入同步已接收状态

第三次握手:

发送端收到接收端确认报文段之后,还需要向接收端发送确认报文段。其中ACK=1,seq=x+1,ack=y+1
发送完之后,发送端进入建立连接状态接收端接收到确认报文段之后,也进入建立连接状态(传输数据)

原因:避免已经失效的连接请求报文突然传送到对方,引起错误

TCP协议的四次挥手?原因


TCP标记说明:

FIN : 终止位。用来释放连接。FIN=1表示发送方发送数据完毕,请求释放传输连接。

第一次挥手:

发送端主动请求释放连接,给接收端发送一个连接释放报文,停止发送数据其中FIN=1,seq=u。
seq=u :表示之前已经传送过的数据最后一个自己的序列号加1。
TCP是全双工的。也就是说一条TCP连接上有两条数据通路,当发送FIN报文时,发送FIN报文的一方就不能再发送数据,也就是关闭了其中一条数据通路,另一条还可以发送数据。
发送端进入第一个释放等待状态

第二次挥手:

接收端收到请求释放报文,然后发出确认释放报文,并且向发送端发送自己未发送完的数据。其中ACK=1,seq=v,ack=u+1
此时,发送端到接收端的数据连接就释放了。
发送端进入第二个释放等待状态接收端进入关闭等待状态

第三次挥手:

接收端发送完自己的数据之后,会再发送一个连接释放报文。其中FIN=1,ACK=1,seq=w,ack=u+1。
接收端进入最后确认状态

第四次挥手:

发送端收到接收端的释放报文之后,发出确认报文段。其中ACK=1,seq=u+1,ack=w+1。
发送端进入等待计时器状态
等待计时器设置的时间为2MSL(最长报文段寿命),建议设置为2分钟
接收端接收到确认报文段之后,两端同时进入关闭状态

为什么要进入等待计时器状态等待2MSL?

(1)保证第四次挥手的发送端发出的确认报文段能够到达接收端,若2MSL时间内没有收到,接收方会重发连接释放报文
(2)确保当前连接的所有报文都已经过期

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值