协议栈——连接服务器

如对方的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 分钟前
宝塔面板如何关闭https强制跳转http/https共存?
运维·服务器·网络·网络协议·http·https
Guheyunyi8 分钟前
AI集成运维管理平台的架构与核心构成解析
大数据·运维·人工智能·科技·安全·架构
奈斯ing15 分钟前
【prometheus+Grafana篇】基于Prometheus+Grafana实现postgreSQL数据库的监控与可视化
运维·数据库·信息可视化·grafana·prometheus
layman052838 分钟前
Nginx 负载均衡、高可用及动静分离
运维·nginx·负载均衡
魔障阿Q1 小时前
华为服务器obsutil使用方法
服务器·人工智能·华为云
Hello.Reader1 小时前
NGINX SSL/TLS 预读模块解密 ngx_stream_ssl_preread_module 实战指南
网络·nginx·ssl
领世达检测V133529092491 小时前
RED DA认证-EN18031网络安全常见问题以及解答
运维·服务器·网络
滴答滴答嗒嗒滴1 小时前
GitHub Actions 深度实践:零运维搭建 CI/CD 流水线
运维·ci/cd·github
搬码临时工2 小时前
公司内网远程访问配置教程:本地服务器(和指定端口应用)实现外网连接使用
运维·服务器
白总Server2 小时前
Golang实现分布式Masscan任务调度系统
java·运维·服务器·开发语言·分布式·后端·golang