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

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协议族的关系

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

相关文章:

  • 用爬虫代码爬取高音质音频示例
  • 深度学习与计算机视觉(一)
  • 【vector题解】杨辉三角 | 删除有序数组中的重复项 | 只出现一次的数字Ⅱ
  • 金字塔切分注意力模块PSA学习笔记 (附代码)
  • Jenkins自动化测试
  • python 字典dict和列表list的读取速度问题, range合并
  • 测试用例的设计方法(全):等价类划分方法
  • Office技巧(持续更新)(Word、Excel、PPT、PowerPoint、连续引用、标题、模板、论文)
  • Java实现ORM第一个api-FindAll
  • HFSS笔记——求解器和求解分析
  • jenkins配置gitlab凭据
  • 0基础学习PyFlink——用户自定义函数之UDTF
  • 【Java 进阶篇】Java Request 原理详解
  • 13 结构性模式-装饰器模式
  • 支持向量机(SVM)
  • Rabbitmq----分布式场景下的应用
  • springboot + redis实现签到与统计功能
  • Redis | 数据结构(02)SDS
  • Linux C语言开发-D7D8运算符
  • redis 配置主从复制,哨兵模式案例
  • Python---练习:使用for循环实现用户名+密码认证
  • react中使用jquery 语法
  • 服务器中了360后缀勒索病毒怎么解决,勒索病毒解密,数据恢复
  • 使用字节流读取文件中的数据的几种方式
  • Android WMS——概述(一)
  • Node编写获取用户信息接口
  • 【从0到1设计一个网关】自研网关的设计要点以及架构设计
  • 论文-分布式-分布式计算|容错-分布式控制下的自稳定系统
  • C#压缩图片的方法
  • 安装 fcitx + 搜狗/谷歌输入法 之后导致 死机,重启后黑屏只有鼠标可以移动