TCP通信协议应该是上位机开发中应用最广泛的协议,无论是西门子S7协议、三菱MC协议或者是欧姆龙的Fins-TCP协议等,都是TCP通信协议的典型应用。很多人在上位机面试时,都会被问到关于TCP通信的一些问题,比如三次握手和四次挥手、TCP与Socket之间的联系等,为了便于大家更好地理解TCP通信,我整理了一套关于TCP通信的20个常见的面试题: 01、OSI参考模型与TCP/IP参考模型 如上图所示,OSI参考模型为7层模型,依次为应用层、表示层、会话层、传输层、网络层、数据链路层及物理层,TCP/IP模型是在OSI参考模型的基础上做了一定的精简,形成一个4层模型。在层次关系上,两者都采用了分层体系结构,都是对等的层间通信,不同之处在于TCP/IP参考模型比OSI参考模型层次更清晰简练,在功能上,两者差别不大,都是为了实现两个或多个终端之间的通信。 02、TCP通信位于网络模型的哪一层? TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,无论是OSI参考模型,还是TCP/IP参考模型,TCP都位于传输层,TCP是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议。 03、如何理解面向连接、可靠、字节流? 面向连接:意味着TCP是点对点之间的通信,不能像UDP那样可以一个主机同时向多个主机发送消息,也就是无法实现一对多的情形。 可靠的:无论网络链路如何变化,TCP都可以保障报文能够到达接收端。 字节流:基于字节流,意味着无论我们消息有多大都可以进行传输。并且消息是有序的,当前一个消息没有收到的时候,即使它先收到了后面的字节已经收到,那么也不能扔给应用层去处理,同时对重复的报文会自动丢弃。 04、为什么需要TCP协议? 因为IP层是不可靠的,它不保证网络包的一定交付、不保证按序交付、也不保证完整交付。因此如果需要保证网络数据包的可靠性,就必须要通过上层即传输层的TCP协议来保证。 05、TCP与UDP之间区别及联系? TCP与UDP都属于传输层协议,区别如下:
TCP 是面向连接的传输层协议 UDP 是不需要连接
TCP 是一对一的两点服务 UDP 支持一对一、一对多、多对多
TCP 保证数据不丢失、不重复、按需到达 UDP 是尽最大努力交付,不保证交付数据 TCP 有拥塞控制和流量控制机制 UDP 则没有拥塞控制和流量控制机制 06、TCP首部报文分析 TCP的首部至少占用20个字节,包含的内容有源端口号、目标端口号、序列号、应答号、控制位、校验和等,具体如下所示: 07、简要说明TCP三次握手
08、简要说明TCP四次挥手
09、TCP握手为什么刚好是三次? TCP 建立连接时,通过三次握手能防止历史连接的建立,能减少双方不必要的资源开销,能帮助双方同步初始化序列号。序列号能够保证数据包不重复、不丢弃和按序传输。 不使用「两次握手」和「四次握手」的原因: 两次握手:无法防止历史连接的建立,会造成双方资源的浪费,也无法可靠的同步双方序列号; 四次握手:三次握手就已经理论上最少可靠连接建立,所以不需要使用更多的通信次数。 10、TCP挥手为什么需要四次? 回顾下四次挥手双方发 FIN 包的过程,就能理解为什么挥手需要四次:
由于服务端通常需要等待完成数据的发送和处理,所以服务端的 ACK 和 FIN 一般都会分开发送,从而比三次握手导致多了一次。 |
/1
|手机版|免责声明|本站介绍|工控课堂
( 沪ICP备20008691号-1 )
GMT+8, 2025-12-23 03:33 , Processed in 0.370070 second(s), 22 queries .
Powered by Discuz! X3.5
© 2001-2025 Discuz! Team.