协议栈——连接服务器

如对方的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)

相关推荐
ZzzZZzzzZZZzzzz…10 分钟前
RHCSA---权限管理
linux·运维·权限管理·特殊权限·rhcsa·acl权限·权限掩码原理
沐浴露z12 分钟前
详解 零拷贝(Zero Copy):mmap、sendfile、DMA gather、splice
java·网络·操作系统
进击的圆儿28 分钟前
10个TCP可靠性与拥塞控制题目整理
网络·c++·tcp/ip
Tinyundg33 分钟前
WinSCP的简单使用与SFTP自动备份 .bat脚本
运维·服务器
Better Bench37 分钟前
【大模型RAG安全基准】安装和使用SafaRAG框架
网络·人工智能·安全·大模型·组件·rag
啊吧怪不啊吧1 小时前
SQL之表的时间类内置函数详解
大数据·服务器·数据库·sql
SoulKuyan1 小时前
android su执行命令
linux·运维·服务器
zz-zjx1 小时前
LVS/IPVS与Keepalived在云原生环境中的深度学习与实践(一)
运维·lvs
一叶飘零_sweeeet1 小时前
Linux 安装 Elasticsearch:避坑指南 + 性能调优实战
linux·运维·elasticsearch
网络精创大傻2 小时前
Terminator SSH 管理器 — 一款适用于 Terminator 的精美 SSH 连接插件
运维·ssh