传输层的作用
传输服务:为应用进程提供端到端的服务,增强网络层提供的服务质量QoS。
传输实体:在收/发两端的传输层实现对等实体通信的硬件或软件。利用网络层提供的点到点的分组传输服务,向高层提供端到端的TPDU(传输协议数据单元)传输服务。
点到点的传输(Point-to-Point)
面向连接的TCP协议
基本概念:为应用进程提供可靠的、端到端的、面向连接的字节流通信协议。利用网络层IP协议提供的不可靠的分组传输服务,解决分组的重传和排序问题。
性质:面向连接,全双工(支持同时的双向传输),Unicast(只支持两端点之间的通信,不支持Multicast和Broadcast),面向字节流。
传输实体:软件实现(用户进程,操作系统核心的一部分:管理TCP字节流、实现与IP层的接口)。
TCP的端口
TCP协议的端口定义:用16bit区分2^16个端口。众所周知端口(全局分配,用于标准服务器,取值小于1024),临时端口(本地分配,主机建立连接时为用户进程动态分配的端口,取值大于等于1024)
用套接字创建通信端点:套接口socket(4BSD UNIX首先提出的进程通信机制),用套接口标识用户进程通信的端点(TCP的端点标识,访问端口,主机IP地址)
TCP协议
TCP报文=TCP头部+应用数据
TCP头部:固定部分20字节,可选部分
应用数据:适应IP的载荷能力(小于65535Byte),适应网络的MTU。

TCP首部的标志字段:URG紧急指针域有效;ACK确认域有效;PSH不必缓冲区满即可上传;RST复位,用于崩溃或错误连接;SYN用于建立连接的同步序号;FIN表示发送方到达数据结尾。
TCP的流量控制——滑动窗口
使用选择重传ARQ:接收有可能乱序,接收方ACK接收窗口中的第一个编号。
窗口尺寸:接收端向发送端发送的,用于控制发送方发送的数据尺寸,防止接收方缓冲区溢出。
TCP运行原理
超时计时器的设定:
TCP拥塞控制
一般情况,拥塞窗口cwnd=发送窗口swnd;在RTT时间内最多发送cwnd长的报文;cwnd<=ssthresh;cwnd是变化的,由小变大,初值为1;
cwnd变化规则:cwnd<ssthresh时,若每一个RTT内,都能正确接收报文,cwnd加倍,若超时,说明出现拥塞,启动拥塞避免算法;cwnd>ssthresh,每经过RTT,cwnd加1;cwnd=ssthresh,上述两种方法皆可)。
拥塞避免算法(慢开始):只要没有按时接收到ACK,ssthresh立刻减半,但不小于2,cwnd重新置1,执行上一段算法。
TCP连接建立与释放
三次握手建立TCP连接:发送方连接请求(SEQ=x),接收方接受连接回送确认(SEQ=y,ACK=x+1),发送方发送数据回送确认(SEQ=x,ACK=y+1),连接成功。
释放连接:非对称释放(发送释放请求后单方终止连接,有可能丢失对方发送的数据),对称释放(各自独立发出释放连接请求,收到对方的释放确认之后才可释放连接,Two-army问题)
无连接的UDP协议
UDP协议概述:为应用进程提供无连接的数据传输服务,适用场景(实时数据传输,节省建立、释放连接和重传的开销),由应用层解决纠错问题,由RFC768定义标准。
UDP的端点标识(Port):用2^16端口区分不同的应用进程,发送端(分配源端口,指定宿端口,构造UDP数据报,交IP;节省建立/释放连接和重传的开销),接收端(匹配UDP头部宿端口的应用进程;匹配成功,数据报排入相应的队列,若端口队列满,则丢弃数据报;匹配不成功,丢弃数据报,回送“宿端口不可达”的ICMP报文)。
UDP数据报的封装
UDP数据报=UDP头部+应用数据


用UDP传输RIP报文
RIP:请求路由信息
UDP:分配端口
IP:赋予IP地址
Ethernet:赋予以太网地址