网络02-TCP的三次握手

2021/12/06 Interview

网络02-TCP的三次握手

目录

TCP简介

1.面向连接的、可靠的、基于字节流的传输层通信协议
2.将应用层的数据流分割成报文段并发送给目标节点的TCP层
3.数据包都有序号,对方收到则发送ACK确认,未收到则重传
4.使用校验和来检验数据在传输过程中是否有误

TCP报文头

三次握手流程

1.服务端处于监听状态。
2.客户端发出请求连接报文:
  SYN = 1, seq = x(初始序列号)
  这个阶段不能携带数据,但是需要消耗一个序列号。
3.服务器同意连接,则发出确认报文:
  SYN = 1, ACK = 1 (确认标识), 
  seq = y (自己也需要一个初始序列号), ack = x + 1(客户端上方的序列号是x, 服务器回应需要确认 x + 1)
  这个阶段同样不能携带数据。
4.客户端还要上方确认报文给服务器:
  ACK = 1, seq = x + 1, ack = y + 1
  可以携带数据了。
5.双方可以开始通信。
为什么需要三次握手?
1.为了初始话序列号的初始值。
2.The principle reason for the three-way handshake is to prevent old duplicate connection
  initiations from causing confusion.
  三次握手的主要原因是为了防止旧的重复连接引起连接混乱问题。
  如果握手的次数只有两次,接收方只能选择接受或者拒绝,但它并不清楚这次的请求是正常的请求,还是由于网络环境问题而导致的过期请求,如果是过期请求的话就会造成错误的连接。

Search

    Table of Contents