计算机网络原理精讲第五章--传输层
5.1 基本概念
TCP:需要将传输的文件分段传输,建立连接会话,实现可靠传输和流量控制
UDP:一个数据包就能够完成数据通信,不需要建立连接会话和流量控制,不使用可靠传输
5.2 传输层的功能
5.2.1 传输层协议和应用层协议之间的关系
常见的应用层协议使用的端口
http=TCP+80
https=TCP+443
RDP=TCP+3389
ftp=TCP+21
共享文件夹=TCP+445
SMTP=TCP+25
POP3=TCP+110
telnet=TCP+23
SQL=TCP+1433
DNS=UDP+53
SNMP=UDP+161
RIP=UDP+520
5.2.2 服务和应用层协议之间关系
服务使用TCP或UDP的端口侦听客户端请求
客户端使用IP地址定位服务器,使用目标端口定位服务
可以在服务器网卡上设置只开放必要的端口,实现网络安全
端口范围:0-65535,一般分三类端口
熟知端口:0-1023
登记端口:1024-49151
客户端端口 :49152-65535
5.3 传输层协议UDP和TCP
5.4 网络安全
网络安全主要从端口开放和连接策略考虑
5.5 TCP可靠传输的实现
这种传输过程的缺点是信道利用率低
超时重传时间大于2倍的往返(RTT)时间
现代网络传输的信道使用情况
TCP滑动窗口技术通过连续ARQ协议保证数据可靠性
5.6 TCP报文格式(重点)
上图中,一行代表32个比特,等于4个字节,固定部分一共5行,总共20个字节
各个字段意义如下
源端口:记录TCP数据包来源端口
目标端口:记录TCP数据包目标端口
序号:Sequence Number,TCP缓存中,发送窗口数据段的第一个字节占整个数据的第几个字节
确认号:确认号是客户端收到数据段后,返回一个值让服务器接下来发哪个数据段
数据偏移:TCP报文长度不固定,数据偏移用来说明TCP报文从哪个字节开始是数据部分
保留:暂时没有用
URG:urgent,紧急发送二进制标记位,发送时不需要排队
ACK:acknowledge,确认二进制标记位,值为0或1;如果是0,代表确认号无效,如果是1,确认号有效
PSH:push,紧急接受二进制标记位,客户端接受时,不需要排队
RST:reset,重连二进制标记位,TCP会话出现严重错误,必须释放连接,要想正常通讯,重新建立连接
SYH:synchronization,同步二进制标记位,同步时用到,当客户端和服务器初次建立连接时,需要同步(TCP/IP三次握手)
FIH:finish,释放连接二进制标记位,当连接结束需要服务端和客户端断开连接时,设置为1发送的标记位
窗口:window size,又称TCP发送缓存和接收缓存大小,客户端和服务端建立连接时协商窗口大小,使其一致
检验和:校验首部和数据部分
紧急指针:当URG为1表示数据包为紧急发送时起作用,紧急指针大小代表数据部分的紧急数据段大小
选项:用于一些自定义设计(例如指定数据段最大1460字节、是否允许选择性确认),在ipv6格式的数据包中已取消
填充:当可选部分不够位数时,用来填充的部分
TCP数据部分:ip数据包最大不超过1500字节,除去ip首部20个字节,剩下的IP数据部分,即传输层中的TCP报文段不超过1480字节,除去TCP首部,得出TCP数据部分最大不超过1460个字节
5.7 TCP流量控制
客户端和服务端建立通信之后,在TCP缓存中通过TCP滑动窗口技术滑动发送和滑动接受数据包,客户端接受数据包之后反馈信息给服务端是否有丢包,服务端根据客户端反馈做下一步处理;
数据发送过程中,窗口大小可以改变,当客户端需要处理缓存数据时,会把窗口大小设置为0,服务端收到信息也会把窗口设置为0,客户端处理完缓存数据之后,重新设置窗口大小,服务端重新发送数据
5.8 TCP的拥塞控制
"拥塞避免"并非指完全能够避免拥塞。利用以上的措施要完全避免网络拥塞还是不可能的。"拥塞避免"是说在拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。
5.9 TCP的运输连接管理