协议:对等实体之间,为实现有效的数据交换或者通信,所必须遵守的规则或标准的集合(三要素为语法-传输的内容,数据结构;语义-数据流代表的含义;同步-发送,接收,处理)
标准的组成:提供的服务访问点SAP和下一层请求的SAP,提供的功能;协议内容;数据包的时序
封装:封装是指将控制信息以头部的形式添加到数据包中,头部包括源地址、目的地址、协议类型等信息。
ICMP(Internet Control Message Protocol): 用于对运行IP的设备的询问,并报告在IP数据包寻径和递交时出错的报告。
常用的协议
- SSL/TLS(Secure Sockets Layer/Transport Layer Security): 用来提供双方设备间的加密和验证通信信道。
- ICMP(Internet Control Message Protocol): 用于对运行IP的设备的询问,并报告在IP数据包寻径和递交时出错的报告。
- NAT(Network Address Translation) :有各种保留地址范围用于特殊目的,这些地址范围作为私有地址保留。
- NVT(Network Virtual Terminal) :为了允许使用不同字符集的计算机之间彼此相互通信,TELNET定义了一个网络虚拟终端字符集。
- UDP:轻量级文件传输协议TFTP的设计是为使用UDP传输层,且无需验证而运行的。
- IMAP(Internet Message Access Protocol): 协议是为服务器到客户端的电子邮件消息传输而设计的。
- IPsec(Internet Protocol Security): 是一种为IPv6设计的支持加密和验证的协议。
- ARP(Address Resolution Protocol): 用来在只知道IP地址的情况下去发现硬件地址。 三次握手(Three-Way Handshake)是TCP协议建立连接的过程,确保通信双方都准备好进行数据传输。这个过程涉及到客户端和服务器之间交换三个报文段(segments),以确认连接的建立。下面是三次握手的具体步骤及其详细解释:
三次握手的步骤
-
第一次握手(Client to Server):
- 客户端发送一个带有SYN(Synchronize Sequence Numbers)标志的TCP报文段到服务器,表示请求建立连接。
- 这个报文段中包含一个初始序列号(ISN, Initial Sequence Number),客户端生成一个随机数作为起始序列号。
- 客户端进入SYN_SENT状态。
-
第二次握手(Server to Client):
- 服务器收到客户端的SYN报文段后,回复一个带有SYN和ACK(Acknowledgment)标志的TCP报文段。
- 这个报文段中包含服务器的初始序列号,以及对客户端初始序列号的确认(ACK = ISN + 1)。
- 服务器进入SYN_RECEIVED状态。
-
第三次握手(Client to Server):
- 客户端收到服务器的SYN+ACK报文段后,发送一个带有ACK标志的TCP报文段。
- 这个报文段中包含对服务器初始序列号的确认(ACK = ISN + 1)。
- 客户端进入ESTABLISHED状态。
- 服务器收到客户端的ACK报文段后,也进入ESTABLISHED状态,连接正式建立。
图解三次握手
Client Server
| |
| SYN (seq=ISNc) |
| ------------------------------------------------------>|
| |
| <----------------------------------------------------- |
| SYN+ACK (seq=ISNs, ack=ISNc+1) |
| |
| ACK (seq=ISNc+1, ack=ISNs+1) |
| ------------------------------------------------------>|
| |
| Connection Established |
| |
三次握手的作用
-
同步序列号:
- 通过三次握手,客户端和服务器可以同步各自的初始序列号,确保数据传输时的可靠性。
- 序列号用于跟踪每个数据包,确保数据包按顺序到达,防止数据丢失或重复。
-
确认连接:
- 三次握手确保双方都准备好进行数据传输。
- 如果只有两次握手,可能会导致连接建立失败或数据传输错误。
-
防止旧数据包干扰:
- 通过三次握手,可以防止旧的数据包干扰新的连接建立。
- 例如,如果客户端发送的SYN报文段在网络中延迟很久后到达服务器,服务器会认为这是一个新的连接请求,但客户端可能已经忘记这个请求。三次握手可以防止这种情况发生。
实际应用中的注意事项
- 超时重传:如果某个报文段在网络中丢失,发送方会在一定时间内未收到确认后重新发送该报文段。
- 半开连接:如果客户端发送了SYN报文段但未收到服务器的响应,连接会处于半开状态,客户端可能会尝试重新发送SYN报文段。
- SYN Flood攻击:攻击者可以通过大量发送SYN报文段来消耗服务器资源,导致服务器无法处理正常的连接请求。这种攻击称为SYN Flood攻击。