• Linux高性能编程学习-TCP/IP协议族


    一、TCP/IP协议族结构与主要协议

    分层:数据链路层、网络层、传输层、应用层

    1. 数据链路层

    功能:实现网卡驱动程序,处理数据在不同物理介质的传输

    协议:

    • ARP:将目标机器的IP地址转成MAC地址
    • RARP:将MAC地址转成目标的IP

    2. 网络层

    2.1 概述

    功能:数据包的选路与转发。网络层对上层协议屏蔽了网络拓扑连接细节,确定两个主机之间的通讯

    协议:

    • IP协议,根据数据包的目的IP地址决定如何转发数据;若数据包不能直接转发到目的主机,则选择合适的下一跳
    • ICMP协议:用于检测网络连接

    2.2 ICMP协议

    分类:

    • 差错报文:回应网络错误(网络不可达或重定向)
    • 查询报文:查询网络信息(ping)

    报文格式:

    3. 传输层

    作用:为两台主机上的应用程序提供端到端的通讯

    网络层和传输层的区别:传输层只关心通讯的起始和目的端,不在于中转过程

    传输层协议:

    • TCP协议:为应用层提供可靠、面向连接和基于流的服务。TCP协议使用超时重传、数据ACK等方式确保数据正确发送到目的端;通信双发需先建立连接,并在内核维护连接的状态、读写缓冲区、定时器等数据结构。TCP协议基于流,发送端可以逐个字节向数据流写入数据;接收端逐个字节解析
    • UDP协议:不可靠、无连接、给予数据报的传输协议。使用UDP协议的应用程序需要自己做数据确认、超时重传等逻辑。
    • SCTP协议:流控制传输协议

    4. 应用层

    作用:在用户空间实现,负责众多逻辑(文件传输、名称查询、网络管理)

    协议:telnet、DNS、OSPF

    二、封装

    封装的目的:上层协议使用下层协议服务的方式,发送数据时,应用程序按协议栈从上到下传递数据

    名词定义:

    • TCP报文段:经过TCP封装后的数据,包含TCP头部信息与TCP内核缓冲区(接收/发送缓冲区)

    • UDP数据报:经过UDP封装后的数据。UDP无需为应用层数据保存副本。若应用程序需要实现丢失重传,需要将丢失的数据从用户空间拷贝到UDP内核发送缓冲区
    • IP数据报:经过IP层封装后的数据。包含头部信息和数据部分;数据部分为TCP报文段/UDP数据报/ICMP报文
    • 帧:经过数据链路层封装后的数据。传输介质不同,帧的类型也不同。
    • MTU:帧最大传输单元,帧最多能携带多少上层协议数据。MTU受网络类型的限制,当IP数据报过大时,需要分片传输

    过程:

    1. 发送端调用send/write函数,向TCP链接写入数据
    2. 内核TCP模块将数据复制到连接对应的TCP内核发送缓冲区
    3. TCP模块将TCP报文段作为参数,调用IP模块提供的函数,产出IP数据报
    4. IP数据报继续经过数据链路层封装,形成帧
    5. 帧为在网络中传输的字节序列,至此封装完成

    三、分用

    四、测试网络

    五、ARP协议工作原理

    六、DNS查询和应答报文

    七、socket和TCP/IP协议族的关系

  • 相关阅读:
    物联网主机E6000引领工业自动化的新篇章
    集合-Collection
    【前端方案】-表格排序列LRU缓存方案
    深度学习快速入门----Pytorch 系列3
    去中心化应用程序(DApp),引领数字世界的未来
    我的创作纪念日
    四大家族垄断下,国产工业机器人企业亟待突围
    Java编程:实现控制台输入一个整数n,输出如下图形。(三角形)
    献给初学者:谈谈如何学习Linux操作系统
    Java初学者也可以实现的图书系统小练习
  • 原文地址:https://blog.csdn.net/qq_38360229/article/details/133978473