TCP报头,建立,释放过程详解--笔面试

本文详细介绍了TCP的报头、三次握手过程和四次挥手(连接释放)机制,包括为何需要三次握手以确保连接可靠性,以及为何关闭连接需要四次挥手。此外,还讨论了TCP和SCTP的区别,以及TCP如何通过滑动窗口协议实现流量控制和拥塞控制。同时,文章解释了TCP中的SYN攻击及其防御策略,以及TCP和UDP的主要区别和TCP的各种计时器的作用。
摘要由CSDN通过智能技术生成

TCP报头

传输层有两大作用:分段和提供端口号。
提供两种服务:面向连接服务TCP和无连接服务UDP
TCP协议是面向连接的,可靠的:确认,重传,排序,流控
TCP的报文格式:如图1
在这里插入图片描述
    图1:TCP报头格式

源端口,标识哪个应用程序发送。 16bit 故端口范围为【0,2^16-1】
	0-1023为系统端口
	1024-49151 登记端口
	49152-65535 客户端使用端口(客户端动态使用)
	
目的端口,标识哪个应用程序接收。 
序号字段。TCP链接中传输的数据流中每个字节都编上一个序号。序号字段的值指的是本报文段所发送的数据的第一个字节的序号。 
确认号,是期望收到对方的下一个报文段的数据的第1个字节的序号,即上次已成功接收到的数据字节序号加1。只有ACK标识为1,此字段有效。 
数据偏移,即首部长度,指出TCP报文段的数据起始处距离TCP报文段的起始处有多远,以32比特(4字节)为计算单位。最多有60字节的首部,若无选项字段,正常为20字节。 
保留,必须填0。 
URG 1比特 紧急指针有效标识。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。 
ACK 1比特 确认序号有效标识。只有当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。 
PSH 1比特 标识接收方应该尽快将这个报文段交给应用层。接收到PSH = 1的TCP报文段,应尽快的交付接收应用进程,而不再等待整个缓存都填满了后再向上交付。 
RST 1比特 重建连接标识。当RST=1时,表明TCP连接中出现严重错误(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立连接。 
SYN 1比特 同步序号标识,用来发起一个连接。SYN=1表示这是一个连接请求或连接接受请求。 
FIN 1比特 发端完成发送任务标识。用来释放一个连接。FIN=1表明此报文段的发送端的数据已经发送完毕,并要求释放连接。 
窗口:TCP的流量控制,窗口起始于确认序号字段指明的值,这个值是接收端正期望接收的字节数。窗口最大为65535字节。 
校验字段,包括TCP首部和TCP数据,是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。 
紧急指针,只有当URG标志置1时紧急指针才有效。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。紧急指针指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。 
Options 可变 选项字段。TCP协议最初只规定了一种选项,即最长报文段长度(数据字段加上TCP首部),又称为MSS。MSS告诉对方TCP“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节”。
新的RFC规定有以下几种选型:选项表结束,无操作,最大报文段长度,窗口扩大因子,时间戳。
	窗口扩大因子:3字节,其中一个字节表示偏移值S。新的窗口值等于TCP首部中的窗口位数增大到(16+S),相当于把窗口值向左移动S位后获得实际的窗口大小。
	时间戳:10字节,其中最主要的字段是时间戳值(4字节)和时间戳回送应答字段(4字节)。
	选项确认选项: 
填充字段,用来补位,使整个首部长度是4字节的整数倍。 
data 可变 TCP负载。 

TCP三次握手

TCP(传输控制协议)的面向连接,是通过三次握手来完成的。
双方通信之前均处于CLOSED状态。

  1. 第一次握手:源主机向目标主机发起连接,同步标志位
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值