计算机网络 -- 运输层(1)TCP和UDP基础
1.运输层与网络层关系
- 网络层(IP)实现了不同主机之间的通信。
- 运输层(TCP/UDP)实现了不同主机上的进程之间的通信(通过端口号实现)。
2.TCP实现可靠传输方法
流量控制,序号,确认,定时器
3.多路复用/分解
- 多路分解:将运输层报文段中的内容交付到正确的套接字。(UDP通过二元组实现,TCP通过四元组区分实现分解到响应套接字。)
- 多路复用:在主机的不同套接字中搜集数据块,为其装上首部数据,生成报文段,将报文段传递到网络层。
4.UDP特性
4.1 UDP特点
- UDP只做了运输层协议能够做的最少工作,除了复用/分解以及少量差错检测外,几乎没有对IP增加其他东西。
- UDP在传输数据之前不需要握手连接。
4.2 UDP优点
- 由于没有拥塞控制,数据传输实时性高。
- 由于不需要建立连接,可以立即传输数据,时延低。
4.3 UDP缺点
- 由于没有拥塞控制,造成分组溢出。
- 数据传输不可靠,只提供差错检测,不提供差错纠正。
4.4 UDP使用场景
流式多媒体,因特网电话,SNMP, DNS
5. TCP特性
- TCP是面向连接的可靠协议。
- TCP协议只在端系统中运行,不在路由器交换机中运行(只看到数据报,而不是TCP连接)。
- TCP提供点对点全双工服务。
5.1 TCP报文段
源端口/目的端口:用于多路复用/分解来自或送到上层应用的数据。
序号/确认号字段:实现可靠数据传输。
- 序号是建立在传送的字节流之上,而不是建立在传送的报文段系列之上。一个报文段的序号是指该报文段首字节字节流编号。
- 确认号是指主机期望收到的下一个字节的序号。
接收窗口:表示接收方愿意接受的字节数量,用于流量控制。
数据偏移/首部长度:由于首部可能含有可选项内容,因此TCP报头的长度是不确定的,报头不包含任何任选字段则长度为20字节,4位首部长度字段所能表示的最大值为1111,转化为10进制为15,15*32/8 = 60,故报头最大长度为60字节。首部长度也叫数据偏移,是因为首部长度实际上指示了数据区在报文段中的起始偏移值。
URG:紧急指针标志,为1时表示紧急指针有效,为0则忽略紧急指针。
ACK:确认序号标志,为1时表示确认号有效,为0表示报文中不含确认信息,忽略确认号字段。
PSH:push标志,为1表示是带有push标志的数据,指示接收方在接收到该报文段以后,应尽快将这个报文段交给应用程序,而不是在缓冲区排队。(仍然要经过缓冲区,只不过迅速将缓冲区中数据进行交付。)
RST:重置连接标志,用于重置由于主机崩溃或其他原因而出现错误的连接。或者用于拒绝非法的报文段和拒绝连接请求。
SYN:同步序号,用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1。
FIN:finish标志,用于释放连接,为1时表示发送方已经没有数据发送了,即关闭本方数据流。
紧急指针:只有当 URG 标志置 1 时紧急指针才有效。紧急指针是一个正的偏移量,和顺序号字段中的值相加表示紧急数据最后一个字节的序号。 TCP 的紧急方式是发送端向另一端发送紧急数据的一种方式。(紧急数据不经过缓冲区,直接交付到应用程序)