TCP/IP: Transmission Control Protocol / Internet Protocol
内部包含的通信协议有TCP传输控制协议(应用程序之间的协议);UDP用户数据报协议(应用程序之间的简单协议);IP网际协议(计算机之间的协议);ICMP因特网消息控制协议(针对错误和状态);DHCP动态主机配置协议(动态寻址)
本文记录传输层TCP协议面试要点
tcp传输消息前需要建立连接,传输完成后释放连接。
三次握手;四次分手;TCP vs UDP;TCP如何保证可靠性;
三次握手过程:
第一次是主机发送建立连接消息给服务器,服务器表示发现这个请求建立连接的消息,第二次是服务器发送我可以连接的消息给主机,第三次是主机发送正式确认连接给服务器。接下来就可以发送数据了
具体过程文字描述如下图
四次分手:
主机发送释放连接消息到服务器;服务器收到后进入半关闭状态,但是还继续接收客户端发来的数据包(防止网络拥塞之类的导致数据包发的慢??),服务器发送收到主机提出的释放连接的确认消息到主机;主机收到后也变为半关闭状态,对服务器后续发来的数据包依然会接受;服务器继续发送释放连接消息表示最后一个消息发完了,我要下线了;主机发送确认消息表示我知道了,拜拜。
这里,服务器收到主机的确认消息后立即下线,主机发送完需要等待一个最长数据包来回的时间(2SML时间),防止1、服务器没收到我的确认包,服务器如果没收到会再次发来释放连接消息。2、这个时间保证了端到端的链路上没有报文段了,担心收到的服务器发来的消息是一个失效连接
为什么建立连接是三次握手,关闭连接确是四次挥手呢?
建立连接的时候, 服务器在LISTEN状态下,收到建立连接请求的SYN报文后,把ACK和SYN放在一个报文里发送给客户端。
而关闭连接时,服务器收到对方的FIN报文时,仅仅表示对方不再发送数据了但是还能接收数据,而自己也未必全部数据都发送给对方了,所以己方可以立即关闭,也可以发送一些数据给对方后,再发送FIN报文给对方来表示同意现在关闭连接,因此,己方ACK和FIN一般都会分开发送,从而导致多了一次。
TCP如何保证可靠性?
• 数据包校验
• 超时重传机制
• 应答机制
• 对失序数据包重排序
• TCP还能提供流量控制
TCP与UDP区别?
https://blog.csdn.net/li_ning_/article/details/52117463
1.基于连接与无连接
2.TCP要求系统资源较多,UDP较少;
3.UDP程序结构较简单
4.流模式(TCP)与数据报模式(UDP);
UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
7.TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付