网络协议的详解

使用socket创建了fd(最开始创建fd时,fd为3。0、1、2分别被stdin   stdout  stderr占用)和tcb(tcp control block)。**一个TCB数据块包含了数据发送双方对应的socket信息以及拥有装载数据的缓冲区**。在两个设备要建立连接发送数据之前,**双方都必须要做一些准备工作,分配内存建立起TCB数据块就是连接建立前必须要做的准备工作。**fd 使用户层,tcp是内核层。socket 实现fd 和tcp 关联。五元组是tcp 的唯一标识。其中五元组包括(remote ip,remote port,local ip,local port,协议类型)通常使用5元组来标识一个数据包属于哪个会话,在数据包查重和流量对比时会使用较多,在网络分析领域也经常会涉及到。

# 二、 三次握手
                发生在协议栈和协议栈之间
![三次握手](https://img-blog.csdnimg.cn/30f0b6feb53c40139040e52a3646fce0.png)


![在这里插入图片描述](https://img-blog.csdnimg.cn/9f2faa81409e424496910dd0928acc9d.png)

由上图可以看出:
        **三次握手发生在**Connect执行连接,客户端给服务器发送syn,
服务器此时形成了tcb(有生命周期),确定5元组,加入到半连接队列(syn队列)


**半连接、全连接建立的前提:服务端必须进入listen状态**

服务端listen()之后实现第一次握手,listen()将listenfd置为listen的状态,可以进行三次握手

![在这里插入图片描述](https://img-blog.csdnimg.cn/126bd0cf26de4d5bbb273a1629b8a45e.png)
第三次握手之后,服务端运行函数accept()
三次握手成功之后调用accept函数(accept函数做两件事:1从全连接队列里取出一个结点;2为这个结点分配一个fd;为tcb和客户端连接做到一个一一对应的关系)22222

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值