目录
一.传输层协议
1.TCP协议
①.TCP协议介绍
- TCP是面向连接的、可靠的进程到进程通信的协议。
- TCP提供全双工服务,即数据可在同一时间双向传输。
②.TCP协议功能
- 面向连接:在数据传输开始前,客户端和服务端需要建立一个连接,确保数据的可靠传输。
- 可靠性:TCP通过序号和确认机制确保数据包的按序接收和正确传输,如果数据包丢失,会进行重传。
- 流量控制:TCP通过窗口机制进行流量控制,避免网络拥塞。
- 全双工操作:支持双向数据流,应用程序可以独立地在两个方向上发送和接收数据。
③. TCP协议工作原理
- 数据分割:应用层的数据流被分割成适当长度的报文段,通常不超过64KB。
- 序号和确认:每个报文段都有一个序号,接收方对每个成功接收的报文段发送确认(ACK),未收到确认的数据将被重传。
- 流量控制:通过窗口机制调节发送速率,避免网络拥塞。
- 错误检测:使用校验和函数检测数据传输过程中的错误,并在必要时进行重传。
④.TCP协议的应用场景
TCP协议适用于需要高可靠性的应用场景,如文件传输、电子邮件、Web浏览器和服务器之间的通信等。由于其可靠性保证,TCP在需要数据完整性和顺序保证的场景中表现优异。
⑤.TCP的报文段格式
⑥.常见TCP端口号及其功能
端口 | 协议 | 功能 |
21 | FTP | FTP服务器所开放的控制端口 |
23 | TELNET | 用于远程登录,可以远程控制管理目标计算机 |
80 | HTTP | 超文本传输协议 |
443 | HTTPS | 用SSL/TLS对数据进行加密和解密,HTTP进行传输 |
25 | SMTP | SMTP服务器开放的端口,用于发送邮件 |
110 | POP3 | 用于邮件的接收 |
2.UDP协议
①.UDP协议介绍
UDP(User Datagram Protocol)是一种面向无连接的传输层协议,主要用于提供简单的数据报传输服务。
②.UDP协议特点
- 无连接:UDP在传输数据前不需要建立连接,直接发送数据包,因此传输效率较高。
- 不可靠:UDP不保证数据的可靠性,可能会丢失、重复或乱序,应用层需要自行处理这些问题。
- 面向报文:UDP保留了应用程序所定义的消息边界,不会对数据进行分割或重组。
- 轻量级:UDP协议结构简单,开销小,适合传输数据量不大且对实时性要求较高的应用。
③.UDP协议报文段格式
- 源端口号:用于标识数据包的发送者端口号。
- 目的端口号:用于标识数据包的接收者端口号。
- 长度:指示整个UDP数据报的长度,包括首部和数据部分。
- 校验和:用于检验UDP数据报的完整性,防止数据在传输过程中被篡改或损坏。
源端口号(16) | 目的端口号(16) |
UDP长度(16) | UDP校验和(16) |
④.UDP协议应用场景
由于UDP的传输效率高且延迟低,它适用于以下场景:
- 实时应用:如视频会议、在线游戏和实时音频传输。
- 广播和组播:UDP支持广播和组播功能,适合需要向多个接收者发送相同数据的场景。
- 性能敏感的应用:对于那些对性能要求较高且能够容忍一定数据丢失的应用,如网络游戏和视频流媒体。
⑤.常见UDP端口号及其功能
端口 | 协议 | 功能 |
69 | TFTP | 简单文件传输 |
123 | NTP | 时间同步 |
67 68 | DHCP | 获取动态IP地址 |
二.TCP三次握手四次挥手详细过程
1.控制位和确认号解释
①.控制位
由6位组成,表示主机之间目前的关系,例如连接还是不连接。具体表示及作用如下:
- SYN(同步位):SYN=1 用于请求连接
- FIN(断开位):FIN=1 用于断开连接
- ACK(确认位):用于确认是否连接 ACK=1表示确认关系
- RST(重置位):用于数据传输有问题重新传输
- URG(紧急位)、PSH(急切位)不常用不做解释
②.确认号(ack)
确认号指接收方返回同意连接时期望发送方下次发送数据第一段的第一个字节编号使用接收方要求的确认号来发送数据,以此验证验证传输是否有问题。
2.TCP三次握手详细过程
①.三次握手的原因
因为二次握手不能够建立连接而四次握手复杂化了过程,三次握手刚好满足建立连接也没有复杂过程。例如PC1向PC2发送请求连接时,PC2在回复确认连接时可以一起将PC2的请求连接发送给PC1,这样PC1只需要再回复一次确认连接就完成了建立连接的过程。
②.三次握手的过程
备注:SYN=1表示请求连接、seq表示数据、ACK=1表示确认关系、ack表示确认号
- PC1向PC2发送请求连接的SYN报文,SYN=1、seq=x;
- PC2收到后返回ACK确认报文和SYN请求连接报文,ACK=1、SYN=1、seq=y、ack=x+1;
- PC1收到后返回ACK确认报文,ACK=1、seq=x+1、ack=y+1。
3.TCP 四次挥手详细过程
①.四次挥手的原因
因为断开连接有一个半连接状态的过程,这个过程指发送方完成数据传输但是接收方不一定完成数据传输,所以要等待接收方也完成数据传输,接收方再发起断开连接请求,完成断开连接的过程。例如PC1向PC2传输数据完成向PC2发送断开连接的请求,PC2只能回复确认断开连接,但是此时不代表PC2也完成数据传输所以处于半连接状态,需要PC2也向PC发送断开连接请求,PC1返回确认断开连接才能完成断开连接过程。
②.四次挥手的过程
备注:FIN=1表示断开连接、seq表示数据、ACK=1表示确认关系、ack表示确认号
- PC1向PC2发送FIN报文请求断开连接,FIN=1、seq=x;
- PC2返回ACK报文表示收到请求,ACK=1、seq=y、ack=x+1;
- PC2向PC1发送FIN报文和ACK报文,FIN=1、ACK=1、seq=z、ack=y+1(由于2次断开连接请求之间有等待时间,所以再次发送ACK确认报文,处于半连接状态,仍可传输数据);
- PC1返回ACK报文表示收到请求断开连接,ACK=1、seq=y+1、ack=z+1。