协议栈——连接服务器

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

相关推荐
少妇的美梦3 小时前
logstash教程
运维
chen9454 小时前
k8s集群部署vector日志采集器
运维
chen9454 小时前
aws ec2部署harbor,使用s3存储
运维
白帽黑客沐瑶8 小时前
【网络安全就业】信息安全专业的就业前景(非常详细)零基础入门到精通,收藏这篇就够了
网络·安全·web安全·计算机·程序员·编程·网络安全就业
christine-rr8 小时前
linux常用命令(4)——压缩命令
linux·服务器·redis
東雪蓮☆9 小时前
深入理解 LVS-DR 模式与 Keepalived 高可用集群
linux·运维·服务器·lvs
qq_264220899 小时前
LVS负载均衡群集和LVS+Keepalived群集
运维·负载均衡·lvs
树码小子9 小时前
Java网络编程:(socket API编程:TCP协议的 socket API -- 回显程序的服务器端程序的编写)
java·网络·tcp/ip
乌萨奇也要立志学C++9 小时前
【Linux】进程概念(二):进程查看与 fork 初探
linux·运维·服务器
雨落Liy9 小时前
Nginx 从入门到进阶:反向代理、负载均衡与高性能实战指南
运维·nginx·负载均衡