unix Socket 要点

listen/accept 流程

三次握手

syn x

syn y ,ack x+1

ack y+1

服务器端在调用listen之后,内核会建立两个队列,SYN队列和ACCEPT队列,其中ACCPET队列的长度由backlog指定。(listen的参数)
服务器端在调用accpet之后,将阻塞,等待ACCPT队列有元素。
客户端在调用connect之后,将开始发起SYN请求,请求与服务器建立连接,此时称为第一次握手。
服务器端在接受到SYN请求之后,把请求方放入SYN队列中,并给客户端回复一个确认帧ACK,此帧还会携带一个请求与客户端建立连接的请求标志,也就是SYN,这称为第二次握手
客户端收到SYN+ACK帧后,connect返回,并发送确认建立连接帧ACK给服务器端。这称为第三次握手
服务器端收到ACK帧后,会把请求方从SYN队列中移出,放至ACCEPT队列中,而accept函数也等到了自己的资源,从阻塞中唤醒,从ACCEPT队列中取出请求方,重新建立一个新的sockfd,并返回。

取出之后,此时的accpet队列中就没有了资源。

SYN包含的TCP连接选项

MSS tcp最大分节 

窗口规模选项

时间戳

结束流程

发起端说 FIN M

接收端说 ack M+1

接收端说 FIN N 

发起端说 ack N+1

2msl ip数据在链路上存在的最大时间

Ip4 数据报最大65535-20 =65515 最小MTU 68字节 20固定头长,最多40字节选项

Ip6 数据报最大65575 -40-20TCP头= 65515 比上面多了40字节 最小MTU 1280字节

MTU IP4 一般1500

IP6 最大净荷模式,mss=65535 发送数据包的限制就是MTU的限制

IP4 一般MTU = mss + tcp头+ip头 =1460+20+20

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值