unix网络基础-TCP连接的建立和终止(记录)
来源:互联网 发布:python apply 编辑:程序博客网 时间:2024/05/17 10:38
TCP连接的建立和终止(记录)
本文纯是为了记录我看的书《UNIX网络编程套接字API》中的写的TCP协议部分知识,记不住啊啊。。。
TCP建立连接
建立TCP连接时会发生的事,(1)服务器必须准备好接受外来的连接。这通常调用socket、bind和listen这3个函数完成,称为“被动打开”。
(2)客户通过调用connect发起主动打开。这将导致客户TCP发送一个SYN(同步)分节(PS:好像是一种特殊的报文),它告诉服务器客户将在(构建立的)连接中发送的数据的初始序列号。通常SYN分节不携带数据,其中在IP数据包只含一个IP首部。一个TCP首部及又可能的TCP选项。
(3)服务器必须确认(ACK)客户的SYN,同时自己也得发送一个SYN分节,其含有服务器将同一个连接中发送的数据的初始序列号。服务器在单个分节中发送SYN和对客户SYN的ACK(确认)。
(4)客户必须确认服务器的SYN,到此完成传说中的三次握手。
以下是流程图:
图中可知,客户给出的初始序列号为J,服务器初始序列号为K,它们都会将接到的SYN序列号加1之后发送。
TCP选项
TCP选项分别有MSS选项,用来通知对端它的最大分节大小;窗口规模选项,通知对端窗口大小;时间戳选项。
TCP连接终止
TCP建立连接时需要3个分节,但在终止连接时则需要4个,因为要实现“4次握手”。
(1)某个应用程序首先调用close,称此端进行主动关闭(active close)。该端发送一个FIN分节,表示数据发送完毕。
(2)接受到这个FIN的对端执行被动关闭。这个FIN由TCP确认。它的接受作为文件结束符(EOF)传递给接收端应用程序(放在已排队等候该应用进程的任何其他数据之后),因为接受FIN意味着接收端进程相应连接上不再需要数据。
(3)一段时间后,接收到这个文件结束符的进程将调用close关闭套接字。这导致它的TCP也发生一个FIN。
(4)接受这个最终FIN的原发送端TCP(即执行主动关闭的那一端)确认这个FIN。
流程图如下:
0 0
- unix网络基础-TCP连接的建立和终止(记录)
- unix网络基础-TCP连接的建立和终止(记录)2
- unix网络基础-SCTP连接的建立和终止(记录)
- UNIX 网络编程学习(一) TCP连接的建立和终止
- 《unix网络编程》(3)TCP连接的建立和终止
- 【转】TCP连接的建立和终止
- TCP连接的建立和终止 详解
- TCP 连接的建立和终止
- TCP 连接的建立和终止
- tcp连接的建立和终止
- TCP连接的建立和终止
- TCP连接的建立和终止
- TCP连接的建立和终止
- [计算机网络] TCP连接的建立和终止
- TCP连接的建立和终止过程
- TCP连接的建立和终止
- TCP连接的建立和终止协议
- TCP连接的建立和终止
- Android样式(style)和主题(theme)
- Java 利用Apache POI 读写Excel文件超出行列限制
- 【C++竞赛 C】yyy的数学公式
- 基础练习 01字串
- 爬取百度贴吧帖子 源码案例
- unix网络基础-TCP连接的建立和终止(记录)
- git的基本使用
- [LeetCode]--71. Simplify Path
- static关键字的作用
- 【Jenkins】构建错误处理方法整理
- 矩阵乘法Strassen算法的伪代码
- 接口的多态
- A. Bear and Prime 100
- java知识点