TCP/IP

TCP/IP

OSI七层

物、链、网、传、会、表、应

物理层:通过物理媒介,用物理线路去传输比特流(双绞线、光纤)

数据链路层:使用一些规程或协议的硬件加到物理线路,控制比特流的传输(以太网、ppp)

网络层:寻址和路由转发(IP、ARP、ICMP)

传输层:可靠传输,只在通信双方节点进行处理(TCP、UDP)

会话层:负责建立和断开通信连接

表示层:数据格式的转换

应用层:应用程序交互细节(Telnet、SSH、HTTP、SMTP、FTP、SSL/TLS)

TCP/IP四层

应用层:提供各种服务

传输层:为应用层实体提供端到端的通信功能,保证了数据包的顺序传送和数据完整性

网络层:解决主机通信的问题(IP,ICMP,IGMP)

网络接入层:负责监视数据在主机和网络之间的转换

三次握手

C->S 给连接请求

S->C 收到请求给确认包,并发出连接请求

C->S 发出确认应答

问:这三次握手过程中,是否可以携带数据

答:第三次可以,因为连接已经建立了;但前两次,出于安全考虑,攻击者如果发出的请求包含大量数据,服务器会花费很多资源去处理

问:什么是 半连接队列

答:服务器第一次收到客户端的SYN请求后,将这种状态下的请求放在同一个队列里;

所以完成三次握手的连接,就放在全连接队列;队列满了就可能会丢包

四次挥手

C和S谁先发出都可以

C->S 发送FIN包,即结束请求 (客户端FIN_WAIT1)

S->C 回复确认包(服务端CLOSE_WAIT)

S->C 等到S做好断开准备后,发出FIN包 (服务端LAST_ACK)

C->S 发送确认包,客户端处于TIME_WAIT,等一段时间后(确保S可以收到),CLOSED

问:什么时候出现大量 TIME_WAIT

答: TCP连接中,主动发起关闭连接的一端,就进入TIME_WAIT状态;高并发场景下会产生大量TIME_WAIT,如(端口扫描器)。

每一个TIME_WAIT,会占用一个本地端口,上限为65535

解决办法:如果影响到了建立新连接,快速回收连接复用;服务端设置一下,缩短TIME_WAIT时间

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2023-2025 是羽泪云诶
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信