Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HTTP握手以及TCP标示位详情 #84

Open
bojue opened this issue Apr 4, 2020 · 0 comments
Open

HTTP握手以及TCP标示位详情 #84

bojue opened this issue Apr 4, 2020 · 0 comments
Labels
http http

Comments

@bojue
Copy link
Owner

bojue commented Apr 4, 2020

TCP标示位

TCP标志位用来确定每个TCP段的请求状态,发送方和接收方使用对应的标志确保另一端数据被正确处理,常见的标示位有6种:

  • SYN(synchronous)

发送/同步标志,表示建立连接。在TCP经典握手过程中,SYN标志是初始化的。

  • ACK(acknowledgement)

确定标志,表示数据成功接收。

  • PUS(push)

推送标志,数据包到达接收端,不对数据进行队列处理,尽快将数据交给应用程序处理。

  • FIN(finish)

结束标志,标示结束一个TCP会话,用于拆除使用上一个SYN创建的虚拟连接。

  • RST(reset)

重置标志,复位对应的TCP连接。当段到达不用于当前连接时,则使用复位标志。

  • URG(urgent pointer)

紧急指针,进入段不用等待之前发送的数据处理状态,直接发送并处理当前数据段,确保中间层尽快处理数据。

HTTP三次握手

TCPConnect

  1. 第一次握手:Client发送位码SYN = 1到Server,随机产生随机数seq=200数据包到Server,进入状态SYN_SEND。
  2. 第二次握手:Server对Client的连接请求应答,发送请求的ack=201,SYN=1,并且随机产生自己的随机数seq=500的包,向Client再次确认,进入状态SYN_RECV。
  3. 第三次握手:Client接收到服务器的SYN+ACK包,Clinet验证Server发送的ACK=1标示服务端接收并应答;向服务器发送确认标志ACK(ack=501)。

通过三次握手过程,客户端和服务器进入TCP连接成功状态(ESTABLISHED)。

参考

@bojue bojue added the http http label Apr 4, 2020
@bojue bojue changed the title HTTP握手过程以及TCP标示位介绍 HTTP握手和挥手过程以及TCP标示位详情 Apr 4, 2020
@bojue bojue changed the title HTTP握手和挥手过程以及TCP标示位详情 HTTP握手以及TCP标示位详情 Apr 5, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
http http
Projects
None yet
Development

No branches or pull requests

1 participant