功能
- 提供进程和进程之间(端到端)的逻辑通信。【网络层提供主机之间的逻辑通信】
- 复用和分用
复用针对发送方不同进程使用同一个传输层协议;
分用指接收方传输层剥去报文首部后,能把数据正确交付到目的进程,使用目的端口号识别。
- 差错检测(首部&数据部分)【网络层只检查IP数据报首部】
传输层寻址与端口
端口:传输层的SAP(service access point),标识主机中的应用进程。
数据链路层的SAP是MAC地址,网络层的SAP是IP地址
端口号:应用进程通过端口号进行标识,只有本地意义。长度16bit,能标识65536个不同的端口号。
49152 = 1100/0000/0000/0000
【记】
套接字(Socket):(主机IP,端口号),唯一标识网络中的一个主机和它上面的一个进程,而后建立的连接会被阻止
UDP
UDP = IP + 复用分用 + 差错检测
UDP首部(8B)
分用时,找不到目的端口号,丢弃报文,并给发送方发送ICMP不可达报文
特点
- 无连接
- 不可靠交付
- 面向报文,适合一次性传输少量数据。【应用层给UDP多长报文,UDP直接封装】
- 无拥塞控制
- 首部开销小,8B
应用
DNS、SNMP,多媒体应用(IP电话,实时视频会议,流媒体),远程调用UDP校验

[17为协议字段,UDP长度 = 首部8B + 数据部分长度]
【只有在进行首部检验时,才填上伪首部】
【数据部分用0填充成4B的整数倍】
TCP
特点
- 面向连接
- 点对点 —> 不能用于广播,多播
- 可靠有序,不丢不重
- 全双工通信
- 面向字节流,采用对报文段的确认机制
- TCP中端口号80标识Web服务器端的HTTP进程
应用
FTP,HTTP,TELNET(远程登录)首部格式(20B)

确认号:接收方期望下一个收到的字节序号。
数据偏移(首部长度):TCP报文段的数据部分距离TCP报文段起始处有多远,以4B为单位。
控制位
- URG(紧急位):URG =1时,发送方优先传输
- ACK(确认位):ACK =1时,确认号有效。连接建立后,ACK必须为1
- PSH(推送位):PSH = 1时,接收方优先处理
- RST(复位):RST = 1时,TCP出现严重差错,需释放连接
- SYN(同步位):SYN =1时,表明是一个连接请求/接受报文
- FIN(终止位):FIN = 1时,表明报文段发送方数据已发完,释放连接
窗口:接收方能够允许接收的数据量。发送窗口 = Min{接收窗口,拥塞窗口}
紧急指针:URG=1时才有意义,指出本报文段中紧急数据的字节数
连接管理
建立连接
三次握手【考查不同时期报文段中重要的首部字段】
- ROUND1
- C:连接请求报文段 SYN=1, seq = x(随机)
- ROUND2
- S端为TCP连接分配缓存和变量
- S:返回确认报文段 SYN=1, ACK=1, seq = y(随机),ack = x+1【期待对方发送的下一个字节】
- ROUND3
- C端为TCP连接分配缓存和变量
- C:SYN = 0, ACK = 1, seq = x+1, ack = y+1
- 第三次握手时,若携带数据,则seq+1,若不携带数据,则不消耗seq
SYN洪泛攻击
攻击者向server大量发送第一次的数据包,但不进行确认。Server再收不到确认后,重复发送ACK给攻击者,浪费资源。
释放连接
四次握手【考查不同时期报文段中重要的首部字段】
任何一方都能够主动终止连接
【FIN用来释放一个连接,标识本方已没有数据要传输,但可以接收对方的数据】
- ROUND1(C)
- FIN = 1, seq = u
- ROUND2(S)
- ACK = 1, seq = v, ack = u+1
- ROUND3(S)
- FIN = 1, ACK =1, seq = w, ack = u+1
- ROUND4(C)
- 客户端回送一个确认报文段,再等待2MSL(最长报文段寿命),连接彻底关闭
- ACK = 1, seq = u+1, ack = w+1
可靠传输
可靠:接收方进程从缓存读出的字节流与发送方发出的字节流完全一样。
序号
序号字段:报文段第一个字节的序号
确认
TCP默认使用累计确认
重传
在规定的时间内没有收到确认,重传已发送报文段。
重传时间:RTTs(加权平均往返时间)【每个RTT的平均值】
冗余ACK
每当收到比期望序号大的失序报文时,发送一个冗余ACK,指明下一个期待字节的序号
发送方收到三次冗余ACK时,进行重传【快速重传】
流量控制
使用滑动窗口机制。
发送窗口 = Min{接收窗口Rwnd, 拥塞窗口}
发送窗口大小要理解为在未收到确认前,还能够发送的最大字节数。
TCP为每一个连接设立一个持续计时器,当一方收到零窗口通知时,启动持续计时器;
持续计时器时间到期,就发送一个零窗口探测报文段,接收方收到后,会返回当前接收窗口值。
拥塞控制
【全局性。流量控制:点到点】
假设数据单方向传送,而另一个方向只发送确认。
假设接收方有足够大的缓存。
慢开始&&拥塞避免
快重传&&快恢复
【区别:当出现网络拥塞时,不是降为1,而是降到新的门限值】
【收到3次冗余ACK后,应执行快恢复算法】
【易混淆点1】
区别两个时间概念:
[此处假定拥塞窗口为50]
- 4个RTT内报文段传输均成功,则报文段都得到确认后:
1 2 4 8为前四次,第四次的8个报文被确认后,窗口大小应变为16
- 第4次报文传输时:
1 2 4 8,8即为第四次传输时的窗口大小
【易混淆点2】
当发生了超时之后,若没有采用快开始,则下一个RTT内窗口大小为1,下一个RTT后窗口大小为2
主机才会有的层次。
