增补博客 第二十九篇 计算机网络复习四
第五章 运输层
1.运输层的作用
运输层向它上面的应用层提供通信服务(提供端到端,进程到进程的可靠通信),为运行在不同host上的进程提供逻辑通信,向高层用户屏蔽通信子网的细节
2.UDP和TCP的特点,及使用它们的应用程序,熟知端口号
UDP和TCP的特点:
-
UDP
-
支持单播、多播、广播
-
无连接,不可靠
-
可以任何速率发送数据
-
TCP
-
仅单播,不支持多播、广播
-
面向连接,可靠按序
-
流量控制(发送速率不超过接收方的接收能力)
-
拥塞控制(网络过载时限制发送方的发送速率)
及使用它们的应用程序:
熟知端口号:
3.UDP:首部格式,检验和
首部格式:
检验和:发送端:
-
先设置检验和字段为0
-
每两个字节为一组,进位累加求和,多出的加到最后一位
-
把求和结果求反,求反即转换成2进制后,0变1,1变0
-
把计算结果放入检验和字段
接收端
-
把每2个字节为一组,进位累加求和
-
把求和结果求反:为0即未检验出差错(不排除没检测出来的错误)
4.TCP的首部格式(端口号,序号,确认号,窗口,首部长度,检验和,6个标志位)
端口号:各占2个字节当访问百度时,源端口使用客户端系统随机分配的端口号,目的端口是使用熟知端口号80序号:占4个字节。序号范围是【0~2^32-1】,循环使用确认号:占4个字节,是期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则代表:序号N-1为止的所有数据都已正确收到窗口:占2个字节。窗口值是【0~2^16-1】之间的整数。窗口指的是发送本报文段的一方的接收窗口。窗口值告诉对方:从本报文段首部中的确认号算起,接收方目前允许对方发送的数据量。窗口值作为接收方让发送方设置其发送窗口的依据。窗口字段明确指出了现在允许对方发送的数据量。窗口值经常在动态变化着首部长度:占4位,也叫数据偏移,最小20,最大60检验和:占2位,检验和字段检验的范围包括首部和数据两部分6个标志位:
-
紧急URG:当URG=1时,表明紧急指针字段有效。紧急指针:指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)
-
确认ACK:只有当ACK=1时确认号字段才有效
-
推送PSH:接收方TCP收到PSH=1的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付
-
复位RST:当RST=1时,表明TCP连接中出现严重差错,重新建立运输连接
-
同步SYN:同步SYN=1表示这是一个连接请求或连接接受报文
-
终止FIN:FIN=1表明发送端的数据已发送完毕,并要求释放运输连接
5.TCP的可靠传输:超时重传机制,TCP流量控制(序号,确认号,确认标志位,窗口,死锁问题与持续计时器),发送缓存和接受缓存的作用,捎带确认与累积确认
超时重传机制:超时计时器时间RTO:RTO=RTTs+4*RTTD测量多个sampleRTT求平均值,形成RTT的估计值RTTs:RTTs=(1-α) * RTTS+α * SampleRTT 典型值α=1/8测量RTT的变化值:RTTs与SampleRTT的差值:RTTd=(1-β) * RTTD+β * |RTTs-SampleRTT| 典型值:β=1/4TCP流量控制(序号,确认号,确认标志位,窗口,死锁问题与持续计时器) :
-
序号:发送窗口里面的序号表示允许发送的序号
-
确认号:表明主机期望收到的下一个序号,而上一个序号位置的数据已经收到了
-
确认标志位:
-
窗口:窗口指的是发送本报文段的一方的接收窗口;发送窗口表示:在没有收到B的确认的情况下,A可以连续把窗口内的数据都发送出去。
-
死锁问题:发送方等待接收方通知窗口大小,接收方等待发送方发送数据
-
持续计时器:当发送方收到接收方的零窗口通知,启动持续计时器。若持续计时器到期,就发送一个零窗口探测报文段
-
接收方发送的确认报文段中:若窗口仍是零,则重置持续计时器若窗口不是零,则死锁打开发送缓存和接受缓存的作用:
-
发送方应用进程把数据发送到TCP的发送缓存;发送缓存暂时存放:1准备发送的数据;2已发送未确定的数据
-
接收方应用进程从TCP的接收缓存中读取字节流;接收缓存暂时存放:1已收到但尚未提交的数据;2失序的数据捎带确认与累积确认:
-
累积确认:即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,这样就表示:到这个分组位置的所有分组都已正确收到了
-
捎带确认:当一个数据帧到达的时候后,接收方并不是立即发送一个单独的控制帧,而是抑制一下自己并且开始等待,知道网络层传递给他下一个分组,然后,确认信息被附在往外发送的数据帧中(使用帧头中的ack域)。实际上,确认报文搭了下一个外发数据帧的便车。
6.TCP的拥塞控制:网络拥塞的判断,传输轮次与拥塞窗口大小的关系(慢开始与拥塞避免,门限ssthresh,重传计时器超时与三个重复ACK)
网络拥塞的判断:重传定时器超时传输轮次与拥塞窗口大小的关系(慢开始与拥塞避免,门限ssthresh,重传计时器超时与三个重复ACK):
-
慢开始:每经过一个RTT,cwnd翻倍
-
拥塞避免:每经过一个RTT,cwnd加一
-
慢开始门限ssthresh:当cwnd = ssthresh时由指数增长切换为线性增长;ssthresh=24时,重传计时器超时,发送方判断为网络拥塞。调整ssthresh=cwnd/2,拥塞窗口cwnd=1,执行慢开始
7.TCP连接:TCP的套接字,三次握手建立TCP连接,四次握手释放TCP连接
TCP的套接字:就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制三次握手建立TCP连接:
-
刚开始客户端A和服务端B都是关闭的
-
B的TCP服务器进程被动打开,准备接受客户进程的连接请求
-
A主动打开,A向B发出SYN报文段,选择初始序号,不携带数据。SYN=1,SEQ=X
-
B收到SYN报文段,发回ACK报文段,选择初始序号,分配缓存,不携带数据。SYN=1.ACK=1.SEQ=Y,ack=x+1
-
A向B发送SYN+ACK报文段,可携带数据。通知上层应用进程:TCP连接已建立。
-
B通知其上层应用进程TCP连接已经建立。
四次握手释放TCP连接:
-
客户端A主动关闭。A向B发出FIN报文段,并停止发送是数据。FIN=1,seq=u
-
B通知应用进程。B收到FIN报文段,回复ACK报文段。TCP连接处于半关闭状态:B仍可发送数据。ACK=1,seq=v,ack=u+1
-
B被动关闭。若B已经没有要向A发送的数据,向A发送FIN报文段。FIN=1,ACK=1,seq=w,ack=u+1
-
A收到FIN报文段后,必须发出ACK报文段。ACK=1,seq=u+1,ack=w+1
-
B收到ACK报文段后,TCP连接关闭。