网络|技术访谈,落后于“三握手,四犹豫”

发布者:上海IT外包来源:http://www.lanmon.net点击数:908

我记得当我在寻找面试时,我经常被问到:你知道“3次握手,4次挥杆”吗?这时,我将“记住”第一次提前准备的“答案”。怎么样,第二次......答案之后,没有答案。面试官似乎无意更深入。当我深入时,我不明白它。我很开心!
作为一名程序员,你必须具有“找到底线”的精神。知道了,我们必须知道原因。本文希望诋毁和恢复其背后的原则。
为方便对文章的一般理解,请手动添加文章目录:
什么是“3次握手,4次挥杆”
TCP是面向连接的单播协议。在发送数据之前,通信方必须在它们之间建立连接。所谓的“连接”实际上是关于存储在客户端内存和服务器中的其他部分的信息,例如IP地址,端口号等。
TCP可以被视为处理数据包丢失,重复和IP层错误问题的字节流。在建立连接期间,双方必须交换一些连接参数。这些参数可以放在TCP头中。
TCP提供可靠的,面向连接的服务,字节流,使用三次握手建立连接的传输层。使用4个波形来关闭连接。
TCP服务模型
在了解了“三向握手和四波手”以建立连接并关闭连接之后,让我们看一下与TCP相关的事情。
TCP连接包括4元组的,由两个IP地址和两个端口号的。 TCP连接通常分为三个阶段:引发,数据传送和输出(端)。

当TCP从另一端接收数据时,它会发送确认,但此确认不会立即发送,通常会延迟一段时间。 ACK是累积的,并且确认字节数N的ACK表示已经正确接收了直到N(不包括N)的所有字节。这样做的好处是,如果你失去了一个ACK,很可能是后续ACK足以证实以前的段。


一个完整的TCP连接是双向的,对称的,并且数据可以在两个方向上同等地流动。为高级应用程序提供双工服务。建立连接后,连接地址中的每个TCP段都包含相反方向的段的ACK。序列号的功能是允许TCP接收器丢弃重复段并以无序顺序记录到达段。由于TCP使用IP传输段,因此IP不提供重复取消或保证正确的顺序。另一方面,TCP是一种字节流协议,它永远不会以无序顺序将数据发送到顶层程序。因此,TCP接收器将被强制保留大的序列号数据,而不将其传递给应用程序,直到填写小序列号的丢失段。
TCP标头
源端口和目标端口确定TCP层中的两个进程。序列号表示段数据中的第一个字节编号,ACK表示确认编号。确认号的发送者期望接收下一个序列号,即成功接收的数据的最后序列字节数增加1。该字段仅在ACK位使能时有效。
建立新连接后,将启用从客户端发送到服务器的第一个段的SYN位。这称为SYN段。在这种情况下,序列号的字段包含在该连接方向上使用的地址。然后,第一个序列号(初始序列号ISN)作为ISN加1发送,因此SYN比特字段消耗序列号,这意味着使用重传进行可靠的传输。不消耗序列号的ACK不是。
标题的长度(图中的数据移位)以32位字为单位,即以4字节为单位,只有4位,最大值为15,因此标题的最大长度为60个字节,最小值为5也就是说,标头的最小大小为20个字节(变量选项为空)。
IT外包
>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部