传输层
一、传输层提供的服务
1、传输层功能
- 传输层提供应用程序之间的逻辑通信(端到端的通信)。与网络层的区别是,网络层提供主机之间的逻辑通信
- 复用和分用。复用是指发送方不同的应用进程都可以使用一个传输层协议传送数据;分用是指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程中。
- 传输层还要对收到的报文进行差错检测。网络层只检查IP数据报的首部,不检验数据部分
- 提供两种不同的传输协议,即TCP和UDP。网络层无法同时实现两种协议(即要么只提供面向连接的服务,要么只提供无连接服务)
2、传输层的寻址和端口
端口标识应用进程
端口号长度是16位,能够表示65536个不同的端口号,端口号只具有本地意义,熟知端口号0-1023,登记端口号1024-49151,需要在IANA登记,剩下的都是临时端口号。
一个通信结点用套接字标识,也就是socket,即ip和端口
常用端口号:
端口 | 服务 | 作用 |
20,21 | FTP | 20:FTP的数据部分 21:FTP的控制部分 |
22 | ssh | |
23 | telnet | 远程登录 |
25 | SMTP | SMTP服务器所开放的端口,用于发送邮件。 |
42 | wins主机名服务 | |
53 | DNS | 域名解析,把域名解析成iP地址 |
69 | TFTP | 提供不复杂、开销不大的文件传输 |
80 | HTTP | 超文本传输协议 |
110 | POP3 | 邮箱发送 |
161 | SNMP | 简单网络管理协议(SNMP) |
443 | HTTPS | 安全的http协议 |
3、无连接服务和面向连接服务
TCP提供面向连接的服务,在传输数据之前必须先建立连接,数据传送结束之后要释放连接。TCP不提供广播或者组播服务。由于TCP提供面向连接的可靠的传输服务,因此不可避免的增加了许多开销,如确认、流量控制、计数器等。不仅使得协议数据单元的头部增加了很多,还要占用许多处理机资源。因此TCP主要适用于可靠性更高的场合,如文件传输协议FTP、超文本传输协议HTTP、SMTP、POP3、远程登录TELNET等。
UDP是一个无连接的非可靠的传输层协议。它在IP之上仅提供了两个附加服务:多路复用和对数据的错误检查。IP知道怎样吧分组投递给一台主机,不知道怎样把他们投递给主机上的具体应用。UDP在传输数据之间不需要建立连接,远程主机的传输层收到UDP报文后,不需要确认。由于UDP简单,执行速度快、实时性好。使用UDP的应用主要包括小文件传送协议TFTP、DNS、DHCP、SNMP和RTP。
二、UDP协议
UDP校验:在计算校验和时,要在UDP数据报之前增加12字节的伪头部,伪头部并不是UDP真正的首部。只是在计算校验和时,临时添加在UDP数据报的前边,得到一个临时的UDP数据报。校验和就是按照这个临时的UDP数据报计算的。伪头部既不向下传送也不向上提交,仅仅是为了计算校验和。这样的校验和,纪检查了UDP数据报,又对IP数据报的源IP地址和目的IP地址进行了检验。
三、TCP协议
- URG: 标识紧急指针是否有效
- ACK: 标识确认序号是否有效
- PSH: 用来提示接收端应用程序立刻将数据从tcp缓冲区读走
- RST: 要求重新建立连接. 我们把含有RST标识的报文称为复位报文段
- SYN: 请求建立连接. 我们把含有SYN标识的报文称为同步报文段
- FIN: 通知对端, 本端即将关闭. 我们把含有FIN标识的报文称为结束报文段
1、TCP连接管理(三次握手和四次挥手)
(1)三次握手
第一步:SYN=1 ,seq=x
第二步:SYN=1,ACK=1,seq=y,ack=x+1,在此期间分配服务器端的资源
第三步:ACK=1,seq=x+1,ack=y+1,在此期间分配客户端的资源
(2)四次挥手
第一步:FIN=1,seq=u
第二步:ACK=1,seq=v,ack=u+1
第三步:ACK=1,FIN=1,seq=w,ack=u+1
第四步:ACK=1,seq=u+1,ack=w+1
2、其他功能
- 可靠传输:序号、确认、重传
- 流量控制
- 拥塞控制:慢开始和拥塞避免,快重传和快恢复