当前位置: 首页 > news >正文

协议栈——连接服务器

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

http://www.lryc.cn/news/181836.html

相关文章:

  • 数据结构--队列与循环队列的实现
  • 数据结构—栈、队列、链表
  • 2023年4月到7月工作经历
  • 嵌入式Linux应用开发-驱动大全-同步与互斥③
  • 力扣-383.赎金信
  • 计算机网络 第二章物理层
  • uniapp:动态修改页面标题
  • java学生管理系统
  • Docker和容器化:简介和使用案例
  • (高阶) Redis 7 第18讲 RedLock 分布式锁
  • 嵌入式软件架构基础设施设计方法
  • MySQL进阶_3.性能分析工具的使用
  • Scala第十三章节
  • Nginx高级 第一部分:扩容
  • vue项目上线后去除控制台所有console.log打印-配置说明
  • 《XSS-Labs》02. Level 11~20
  • Java中处理千万级数据的最佳实践:性能优化指南
  • LCR 069.山峰数组的峰顶索引
  • AtCoder Beginner Contest 233 (A-Ex)
  • 解决caffe中的python环境安装的问题
  • 专业图像处理软件DxO PhotoLab 7 mac中文特点和功能
  • 面试题:Kafka 为什么会丢消息?
  • WSL安装异常:WslRegisterDistribution failed with error: 0xc03a001a
  • 【C语言 模拟实现strcmp函数】
  • maven 依赖版本冲突异常
  • 蓝牙核心规范(V5.4)11.5-LE Audio 笔记之Context Type
  • 【Linux】RPM包使用详解
  • 勒索病毒最新变种.Elbie勒索病毒来袭,如何恢复受感染的数据?
  • ArduPilot开源飞控之AP_Mission
  • JVM111