1.TCP(传输控制协议):面对连接的可靠传输协议,协议号6
TCP: 优:可靠,安全(重传,流控),确认机制 缺:慢 应用场景:用于重要数据的传递 UDP: 优:快 缺:不可靠,不安全,无重传流控确认机制 应用场景:实时流量的传递(对带宽要求高),视频会议,电话流量
TCP连接的建立过程:
三次握手:
1.本端向对端发送SYN报文,序列号为a,SYN置位
2.对端向本端发送SYN ACK报文,序列号为b,ACK确认号为a+1,SYN和ACK置位(ACK确认号确认哪个连接,告诉本端下一个发送的SYN序列号)
3.本端向对端发送ACK报文,序列号为a+1,ACK确认号为b+1,ACK置位
TCP断开连接:
四次挥手:
1.本端向对端发送一个FIN请求断开连接
2.对端向本端发送ACK确认断开连接,自此单向TCP连接断开
3.对端向本端发送一个FIN请求断开连接
4.本端向对端发送ACK确认断开连接,自此双向TCP连接断开
数据传输的可靠性:
重传机制、滑动窗口机制(流控)、确认机制
端口号:0—65535 (端口号用来区分不同的网络服务)
知名端口号:1——1023
非知名端口号:1024——65535
常用端口号:
FTP:21/20
HTTP:80
Telnet(远程登录):23
SMTP(简单邮件传输协议):25
TCP头部: Source Port:16比特,源端口号,建立端到端连接时本端的端口号。 (标识哪个应用程序发送。) Destination Port:16比特,目的端口号,建立端到端连接时对端的端口号。 (标识哪个应用程序接收。) Sequence Number:32比特,序列号,标识一个TCP连接。 Acknowledgment Number:32比特,确认序列号,序列号+1. (是期望收到对方的下一个报文段的数据的第1个字节的序号,即上次已成功接收到的数据字节序号加1。只有ACK标识为1,此字段有效。) Data Offset:4比特,头部长度,以4字节为 单位。(即数据偏移,指出TCP报文段的数据起始处距离TCP报文段的起始处有多远,以32比特(4字节)为计算单位。最多有60字节的首部,若无选项字段,正常为20字节。) Reserved:6比特,保留字段。(必须填0。) URG:(U位)1比特, 紧急指针,取值为1时,表示数据需要紧急处理,紧急指针位有效。 ACK:(A位)1比特,确认序号位,取值为1时,表示确认序列号有效,对消息进行确认的。(只有当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。) PSH:(P位)1比特,取值为1时,表示数据需要优先交给应用层去处理,(通常与U位同时使用,取值一般相同)。 (标识接收方应该尽快将这个报文段交给应用层。接收到PSH = 1的TCP报文段,应尽快的交付接收应用进程,而不再等待整个缓存都填满了后再向上交付。) RST:(R位)1比特,取值为1时,表示请求重新建立连接。(重建连接标识。当RST=1时,表明TCP连接中出现严重错误(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立连接。) SYN:(S位)1比特,同步序号标识,取值为1时,表示请求建立连接。(用来发起一个连接。SYN=1表示这是一个连接请求或连接接受请求。 ) FIN:(F位)1比特 发端完成发送任务标识,取值为1时,表示请求断开连接。(用来释放一个连接。FIN=1表明此报文段的发送端的数据已经发送完毕,并要求释放连接。 Window:16比特 窗口字段,确认窗口的大小。 (TCP的流量控制,窗口起始于确认序号字段指明的值,这个值是接收端正期望接收的字节数。窗口最大为65535字节。 Checksum:16比特,校验码。(包括TCP首部和TCP数据,是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。 Urgent Pointer:16比特 紧急指针位,确定需要优先处理的数据的范围。(只有当URG标志置1时紧急指针才有效。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。紧急指针指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。 Options:可选字段。(TCP协议最初只规定了一种选项,即最长报文段长度(数据字段加上TCP首部),又称为MSS。MSS告诉对方TCP“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节”。 新的RFC规定有以下几种选型:选项表结束,无操作,最大报文段长度,窗口扩大因子,时间戳。)
窗口扩大因子:3字节,其中一个字节表示偏移值S。新的窗口值等于TCP首部中的窗口位数增大到(16+S),相当于把窗口值向左移动S位后获得实际的窗口大小。
时间戳:10字节,其中最主要的字段是时间戳值(4字节)和时间戳回送应答字段(4字节)。
选项确认选项:
Padding:填充字段,用于保证每个可选字段达到4字节。(用来补位,使整个首部长度是4字节的整数倍。)
2.UDP(用户数据包协议):协议号17,面向无连接的不可靠传输协议,需要应用为它提供数据处理
UDP不提供重传机制,占用资源小,处理效率高
一些时延敏感的流量,如视频,语音等,通常使用UDP作为传输协议,可以依据报文首部中的序列号字段进行重组
UDP头部: Source Port:源端口号,2字节,标识哪个应用程序发送(发送进程)。 Destination Port:目的端口号,2字节,标识哪个应用程序接收(接收进程)。 Length:长度,2字节,UDP首部加上UDP数据的字节数,最小为8。 Checksum:校验和,2字节,覆盖UDP首部和UDP数据,是可选的。
传输层提供了主机应用程序进程之间的端到端的服务,基本功能如下:
1、分割与重组数据。
2、按端口号寻址。
3、连接管理。
4、差错控制和流量控制,纠错的功能。
传输层要向会话层提供通信服务的可靠性,避免报文的出错、丢失、延迟时间紊乱、重复、乱序等差错。
端口分类: 1、硬件端口:CPU通过接口寄存器或特定电路与外设进行数据传送,这些寄存器或特定电路称之为端口。其中硬件领域的端口又称接口,如:并行端口、串行端口等。
2、网络端口:在网络技术中,端口(Port)有好几种意思。集线器、交换机、路由器的端口指的是连接其他网络设备的接口,如RJ-45端口、Serial端口等。我们 这里所指的端口不是指物理意义上的端口,而是特指TCP/IP协议中的端口,是逻辑意义上的端口。
3、软件端口:缓冲区。
|