码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 协议栈——创建套接字


    前面几篇文章讲解的是应用程序使用Socket间接通知协议栈进行的连接,通信阶段,那么从现在开始讲解协议栈和网卡驱动的故事

    回顾上篇文章,我们从第一阶段创建套接字,协议栈返回描述符讲起~~~

    协议栈结构

    首先来看下协议栈的大致结构:

    应用程序

    代表客户端,浏览器,电子邮件等程序,这些程序发出请求委派给下一层的Socket

    Socket程序

    解析器也是Socket的一部分用于DNS服务查询域名的IP地址,其他部分就是委派操作系统的协议栈去处理数据了

    操作系统

    操作系统的协议栈分为两部分,上半部分为TCP/UDP协议;下半部分为IP协议;IP协议部分用于接受TCP,UDP的请求进行填充额外控制信息,数据在网络中如果超过一定长度(后面讲解)是需要切割分成一个一个包进行传输的,而IP协议就是用于收发网络包的。在图中还可以看到有ICMP和ARP,ICMP用于表示网络包传输过程中出现的错误,ARP是用于根据IP查询MAC地址(为什么需要MAC地址呢?因为操作系统是委托网卡的,网卡需要知道MCA地址)

    驱动程序

    网卡驱动程序用于控制网卡,IP协议向网卡驱动程序发送的数字信号接下来会被网卡转换数为电信号在网线中传输。

    套接字

    协议栈的内部会有一块记录通信对方的ip端口,通信状态,使用这块内存的应用pid的内存空间等,这个内存空间就是套接字存储的内容,这些内容叫做控制信息

    协议栈需要根据套接字所存储的控制信息进行下一步的操作。

    netstat命令用于查看套接字内容

    • proto协议类型tcp或者udp协议
    • localaddress “:”前面代表本机使用的ip地址(ip地址本来是网卡才有的,因为计算机内部有很多网卡,所以也就说计算机有很多ip地址);后面代表使用的端口号(根据套接字生成的一个数字)
    • foreignaddress:和loacladdress一样的格式,两者都是建立连接后才会显示数字的默认是0
    • state是这个套接字的连接状态
    • pid:使用这个套接字的应用程序,由于一个应用程序会有很多个网络请求因此也有多个套接字

    应用程序通过socket向协议栈发起创建套接字的请求时,协议栈会创建出一块内存并写入这个套接字刚创建完成的初始化状态,并将代表这个套接字的描述符返回给应用程序。

    原文链接:协议栈——创建套接字 - 掘金 (juejin.cn)

  • 相关阅读:
    Ubuntu中安装Anaconda 如何将 路径导入为全局变量
    qt 乱码 dll 乱码
    【云原生】Kubernetes----Metrics-Server组件与HPA资源
    【甄选靶场】Vulnhub百个项目渗透——项目十五:Raven-1(wp利用,UDF提权)
    Only file and data URLs are supported by the default ESM loader
    一份谷歌写给 CTO 们的报告 - DORA 2023 版全面解读
    高级性能测试系列《18.csv数据文件设置:遇到文件结束符再次循环?遇到文件结束符停止线程?线程共享模式。》...
    SBOM:缓解软件供应链风险的关键
    JSP page指令
    进程之间的通信(管道详解)
  • 原文地址:https://blog.csdn.net/m0_65909361/article/details/133604031
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号