协议栈——连接服务器

如对方的ip和port配置信息,这里的连接是指通信前的准备工作

上一篇介绍查看套接字的命令时,可以看到很多信息,但是刚刚创建出来的套接字是什么信息都没有的,协议栈也因此不知道和谁通信;

客户端填补信息

这一步中调用socket的connect指定通信的服务器ip和端口还有使用的描述符,对应的套接字会保存这些信息,这样客户端的协议栈就可以知道通信对方的信息了。

协议栈的tcp模块根据ip地址和端口号接着创建tcp头部信息讲这些信息填入,协议栈的tcp模块也就知道了服务器的ip和端口 接着委托ip模块 和服务器的ip模块发送数据

服务端填补信息

和客户端不一样,创建套接字是服务器启动就会执行的,创建完成后一直在等待客户端的连接。收到客户端的连接后,也会取出对应的端口号判断出使用哪个套接字,并把相关信息保存到套接字中。

服务器的ip模块收到数据转发给tcp模块,根据头部信息的端口号找到对应的soxket链接进行双方的建立管道通信

控制信息

头部信息

控制信息用于确定通信双方,一类是头部信息,如下图所示:


上面介绍的是tcp头部的信息;ip协议也有头部在这层协议会把ip头部添加到tcp头部前面;网卡必须知道mac地址,因此也有mac头部添加到ip头部。都是在不同层进行添加的。

这类信息在连接通信断开的各个阶段都需要携带在tcp的头部。

套接字信息

还有一类信息是用于控制协议栈操作的 ,这部分是套接字保存的信息,不同操作系统协议栈实现不同,但套接字保存的内容有一些是共通都需要的,只要这部分信息能够确定就可以进行通信,不需要考虑不同操作系统不同协议栈导致的差异

原文链接:协议栈------连接服务器 - 掘金 (juejin.cn)

相关推荐
还是朝夕2 小时前
攻击实验(ARP欺骗、MAC洪范、TCP SYN Flood攻击、DNS欺骗、DHCP饿死)
网络
失因4 小时前
SELinux 安全机制详解与管理
linux·运维·安全·centos
MANONGMN5 小时前
【走进Docker的世界】Docker的发展历程
运维·docker·容器
阿雄不会写代码5 小时前
Amazon Linux 训练lora模型的方式
linux·运维·服务器
Bruce_Liuxiaowei6 小时前
绕过文件上传漏洞并利用文件包含漏洞获取系统信息的技术分析
运维·网络安全·php·apache
数据与人工智能律师6 小时前
刑法视野下的虚拟财产属性争议:法律风险与市场潜力解析
大数据·网络·人工智能·云计算·区块链
monster_风铃8 小时前
华为实验:DHCP 典型配置
运维·服务器·网络
MANONGMN9 小时前
【走进Docker的世界】深入理解Docker网络:从模式选择到实战配置
网络·docker
珹洺10 小时前
Linux操作系统从入门到实战(十八)在Linux里面怎么查看进程
linux·运维·服务器
企鹅侠客12 小时前
Docker 跨主机容器之间的通信macvlan
运维·docker·容器·macvlan·docker容器跨主机通信