计算机网络第五章笔记

框架图 

 

一、网络层和运输层的一些区别 

注意:其中IP层就是网络层

二、端口

由于在网络层只能把数据报传送到对应的主机,但是究竟是这台主机上的哪个进程去获取这个数据报,则无法区别。所以就在运输层使用协议端口号,通常简称为端口号,而这种协议端口是软件端口,与路由器或交换机上的硬件端口号不同。

注意:不使用进程号是因为不同的操作系统,进程号有区别,所以统一定义一个端口号来区别进程。每个主机都有65535(16位)个端口号。

端口号分类

三、用户数据报协议UDP

UDP协议的格式:

 UDP的特点:

1.发送之前不需要建立连接,也就是没有三次握手,四次挥手,所以连接不稳定,很可能会丢包

2.UDP支持一对一,一对多,多对一,多对多的交互通信方式,由于没有建立一条稳定的通道,所以我认为不存在是全双工通信或者单工通信什么的。

3.UDP是面向报文的传输层协议,即只是简单的将进程交下来的报文添加一个UDP协议头部,就发送出去。

四、套接字

套接字是TCP是协议连接的端点,可以这样定义

将端口和IP地址绑定,就是套接字

五、TCP报文段格式

 源端口和目的端口:顾名思义

序号:TCP会给报文段的数据部分编号,每一个字节一个编号,而这个序号是本报文段数据部分的首字节编号。编号的范围是0~2^32-1,如果溢出,就从零开始。

确认号:是期望得到对方下一个报文段的序号

紧急指针:在URG=1 时才有意义,指出本报文段中的紧急数据的字节数

选项:可以选择一些信息,比如最大报文段,

 数据偏移:TCP报文的数据部分起始处距离TCP报文段的起始位置有多远。我理解为是TCP首部的大小

保留:目前都置为0

UGR(紧急):当UGR=1,表示高优先级,尽快处理

ACK(应答):在握手和挥手的时候使用

PSH(推送):当PSH=1,不用存储在缓存中,直接发送给进程(使用较少)

RST(复位):当RST=1,表明TCP中出现严重差错,需要释放链接,重新连接

SYN(同步):也是在握手和挥手的时候使用

FIN(终止):当FIN=1时,表明当前数据发送完毕,并要求释放连接

窗口:告诉对方,接收方目前允许对方发送的数据量

就是接收了这个报文以后,我还能再接收1000字节的数据

检验和:检验首部和数据部分传输过程中是否正确

六、以字节为单位的滑动窗口

滑动窗口中存在以下几种情况

1.普通的发送过程

2.没有按序收到,确认号就不会改变,直到按序收到一部分数据了

3.窗口中的数据全部发送成功

 逻辑窗口图与TCP缓存图之间的关系

注意:

1.TCP传输分析一定要分清哪一方是发送方,哪一方是接收方。其实TCP是全双工协议,所以 传输的两方都可以是发送方或者接收方,但是分析的时候只要固定一方是发送方,一方是接收方比较方便。

2.TCP在两台通信的主机内存中都是有缓存的,需要发送的数据并不是立刻发出,而是先存放在缓存中的

七、超时重传

如果发送方已发送了若干数据,但是接收方一直没有发送确认信息,发送方就会把刚才的发送数据再发一次。

这其中有个问题,就是如果只是其中一部分数据,没有收到确认信息,那么大部分情况下,是将所有刚才发送的数据重新发送一次,如果在TCP头部的选项中选择了选择确认(SACK),就会重新发送没有收到确认信息的那一部分数据。

八、TCP传输过程示例

其中ACK是头部中的ACK标志位,ack是确认号,seq是序号

九、TCP报文的发送时机(也就是数据段装多少数据,就可以组成一个TCP报文发送了)

有三种机制:

 十、TCP拥塞控制算法

一些必要定义:

拥塞窗口(cwnd):TCP传输过程中的窗口大小主要依据网络阻塞的情况,而并不是接收端的接收缓存大小(也就是默认接收缓存大小为无穷大)

传输轮次:将窗口所允许的报文段都发送出去,并全部都收到确认应答,即完成一轮传输轮次

RRT:完成一个传输轮次使用的时间

如何从TCP的一端来判断是否网络阻塞?

如果发送的报文段出现超时情况了,就会判定为网络阻塞

TCP的拥塞控制算法主要由以下四种算法组合起来的:

慢开始:

拥塞避免: 

快重传:是为了防止发送报文段没有应答,是因为报文段丢失,而不是网络拥塞的情况。

快恢复 :在快重传出现后,不会从慢开始重新执行,而是执行快恢复,也就是调整ssthresh=cwnd/2,并设置cwnd=ssthresh,并且执行拥塞避免算法。

TCP拥塞控制整体流程图:

示例展示

在3处发生了快重传和快恢复 

所以整个过程就是不断的执行慢开始和拥塞避免的过程。假设如果网络比较拥塞的情况下,ssthresh就会比较小,所以窗口就不会很大,这样就减轻了网络的负担。

十一、三次握手

其中SYN是同步位,seq是序号,ack是确认号,ACK是应答位

序号是由发送的这条报文数据确定的,而确认号是由上一条接收的报文确定的

 异常情况:

   第一次握手A发送SYN传输失败,A,B都不会申请资源,连接失败。如果一段时间内发出多个SYN连接请求,那么A只会接受它最后发送的那个SYN的SYN+ACK回应,忽略其他回应全部回应,B中多申请的资源也会释放

     第二次握手B发送SYN+ACK传输失败,A不会申请资源,B申请了资源,但收不到A的ACK,过一段时间释放资源。如果是收到了多个A的SYN请求,B都会回复SYN+ACK,但A只会承认其中它最早发送的那个SYN的回应,并回复最后一次握手的ACK

     第三次握手ACK传输失败,B没有收到ACK,释放资源,对于后序的A的传输数据返回RST。实际上B会因为没有收到A的ACK会多次发送SYN+ACK,次数是可以设置的,如果最后还是没有收到A的ACK,则释放资源,对A的数据传输返回RST

十二、四次挥手

MSL:最长报文段寿命

 十三、将握手状态和挥手状态结合起来的示意图

其中粗虚线是服务器的状态变迁,粗实线是客户端的状态变迁,细实线是异常状态变迁 

十四、TCP与UDP的区别

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值