3.TCP

传输控制协议

1.TCP/IP 协议族中各个协议间的关系

3.TCP_第1张图片

2.端口 Port

端口号 0 - 65535 其中0 - 1023 为常用端口被占用,

常见有80端口 分配给HTTP服务

21端口 分配给FTP服务

3.TCP_第2张图片
动态端口

3.TCP Server 建立的过程

--1.socket 创建出来的套接字  是主动套接字 通过listen()  由主动变为被动

--2.server端 accept() 阻塞线程,直到client  connect()到sverver,其中建立连接 tcp三次握手 

3.TCP_第3张图片

4.TCP协议的三次握手

3.TCP_第4张图片
三次握手建立过程

client :

socket()

1.connect() 底层 向server socket(正在accept())发送 一条SYN消息 内容为0

2.server 收到SYN消息,发送给client ACK消息,内容为SYN包内容+1 ,同时给client 发送一个SYN包,内容为0

3.client 收到 server 发来的ACK消息 解析其内容为自己向server 发送的SYN消息+1  验证通过

同时,收到server 发来的SYN消息,内容为0,

4.client 验证通过 server 发来的ACK消息,并且收到SYN消息,将其内容+1,向Server发送ACK消息

5.Server 收到 client 发出的ACK 消息,内容为自己向client 发送的SYN消息内容+1 验证通过,三次握手建立完成

1.SYN(1)

2.SYN(2)+ACK(SYN(1)+1)

3.ACK (SYN(2)+1)

5.四次挥手

任意一端调用Close 底层则进行四次挥手过程

3.TCP_第5张图片

一般来讲

1.client close() 底层发送FIN + ACK包 

2.server 并且向Client 发送 ACK包

3. server 收到长度为 FIN+ACK包后 len(recvdata) == 0 相继也调用close 底层同样发送FIN 消息包到client

4.client 收到FIN后,返回ACK消息给Server 

5.四次挥手完成

你可能感兴趣的:(3.TCP)