第17/18章 TCP:概述、连接建立和终止

2016-09-01  本文已影响35人  yulongsun

1、 概述

** TCP依靠以下方式来提供可靠性:**
超时重发。主要不得到确认,就重新发送数据报,知道对方确认为止。


2. TCP首部

TCP数据被放在一个IP数据包中,如图:

TCP数据在IP数据包中的封装

下图为TCP首部的数据格式。如果不计任选字段,通常为20个字节。

TCP首部数据格式

3. TCP连接的建立

TCP连接建立-三次握手

三次握手过程如下

  1. 第一次握手:建立连接,客户端A发送SYN包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器B确认。
  2. 第二次握手:服务器收到SYN包,必须确认客户端A的SYN包(ack=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包。此时服务器进入SYN_RECV状态。
  3. 第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ack=y+1),此包发送完毕,客户端A
    和服务器端B都进入ESTABLISHED状态,完成三次握手。
    完成三次握手,客户端与服务器端开始传送数据。

4.TCP连接的断开

TCP连接的终止

四次挥手过程如下:

  1. 连接的一个A的某个应用程序首先调用close,执行主动关闭。他的TCP发送一个FIN分节,表示数据发送完毕;
  2. 接受的到的这个FIN分节的对端B执行被动关闭,并由其TCP确认这个FIN(向A发送确认)。然后将这个FIN作为文件结束符发送给他自身的应用进程;
  3. 一点时间后(中间有个close-waite),B调用close关闭套接字,并由其TCP发送一个FIN给A;
  4. 接受到这个FIN的A端TCP发送ACK确认这个FIN;

彩蛋:

三次握手:
“喂,你听得到吗?”
“我听得到呀,你听得到我吗?”
“我能听到你,今天balabala……”

两次握手:
“喂,你听得到吗?”
“我听得到呀”
“喂喂,你听得到吗?”
“草,我听得到呀!!!!”
“你TM能不能听到我讲话啊!!喂!”
“……”

四次握手:
“喂,你听得到吗?”
“我听得到呀,你听得到我吗?”
“我能听到你,你能听到我吗?”
“……不想跟傻逼说话”

作者:匿名用户
链接:https://www.zhihu.com/question/24853633/answer/114872771
来源:知乎
著作权归作者所有,转载请联系作者获得授权。

整个流程

TCP协议中的三次握手和四次挥手(图解)
《TCP/IP详解》学习笔记-第17/18章 TCP:概述、连接建立与终止

上一篇下一篇

猜你喜欢

热点阅读