Linux高性能服务器编程|阅读笔记:第1章 - TCP/IP协议族

举报
海轰Pro 发表于 2023/05/16 22:57:09 2023/05/16
【摘要】 简介Hello!非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~ ଘ(੭ˊᵕˋ)੭昵称:海轰标签:程序猿|C++选手|学生简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金,有幸在竞赛中拿过一些国奖、省奖…已保研学习经验:扎实基础 + 多做笔记 + 多敲代码 + 多思考 + 学好英语! 唯有努力💪 本文仅记录自己感兴趣的内容 1.1 TCP/IP协议族体系结构以及主...

简介

Hello!
非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~
 
ଘ(੭ˊᵕˋ)੭
昵称:海轰
标签:程序猿|C++选手|学生
简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金,有幸在竞赛中拿过一些国奖、省奖…已保研
学习经验:扎实基础 + 多做笔记 + 多敲代码 + 多思考 + 学好英语!
 
唯有努力💪
 
本文仅记录自己感兴趣的内容

1.1 TCP/IP协议族体系结构以及主要协议

TCP/IP协议族:四层系统系统

  • 数据链路层
  • 网络层
  • 传输层
  • 应用层

1.1.1 数据链路层

数据链路层中常用的协议:

  • ARP协议:地址解析
  • RARP协议:逆地址解析

IP地址与机器mac地址之间的转化

网络层

作用:实现数据包的选路与转发

常用的协议:

  • IP协议
  • ICMP协议:用于检测网络连接

ICMP协议报文结构:

解释:

  • 8位类型:区分报文类型,ICMP报文分为两类
    • 差错报文:回应网络错误,比如目标不可达或重定向
    • 查询报文: 查询网络信息,例如ping
  • 8位代码:进一步细分不同的条件

1.1.3 传输层

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

传输层和网络层的区别:

常用的协议:

  • TCP协议
  • UDP协议
  • SCTP协议:一种相对较新的传输层协议,为了在因特网上传输电话信号而设计(简单了解即可)

1.1.4 应用层

作用:负责处理应用程序的逻辑

常用的协议:

  • telent:远程登录协议
  • OSPF:开放最短路径优先,动态路由更新协议,用于路由器之间的通信,以告知对方各自的路有信息
  • DNS协议

1.2 封装

各层协议之间的数据封装

TCP报文段封装过程:

1.3 分用

分用概念:当帧到达目的主机时,将沿着协议栈自底向上依次传递。各层协议依次处理帧中本层负 责的头部数据,以获取所需的信息,并最终将处理后的帧交给目标应用程序。这个过程称为 分用(demultiplexing)。

分用是依靠头部信息中的类型字段实现的
标准文档RFC1700定义 了所有标识上层协议的类型字段以及每个上层协议对应的数值

以太网帧的分用过程:

1.4 测试网络

文中准备了一个测试网络,用于网络测试

1.5 ARP协议工作原理

作用:实现任意网络层地址到任意物理层地址的转换

工作原理:主机向自己所在的网络广播一个ARP请求,该请求包含目标机器的网络地址。此网络上的其他机器都将收到这个请求,但只有被请求的目标机器会回应一个ARP应答,其中包含自己的物理地址。

1.6 DNS工作原理

…(略)

1.7 socket和TCP/IP协议栈的关系

背景:数据链路、网络、传输层协议是在内核中实现的,因此在操作系统中需要实现一组系统调用,使得应用程序能够访问这些协议提供的服务

通俗理解:这些协议都是在内核中实现,在应用程序(用户态)中我们是无法直接使用这些协议的,这时需要一个工具来调用操作系统内核中的这些协议,这个工具就可以理解为socket

socket提供的功能:

  • 将应用程序数据从用户缓冲区复制到TCP/UDP内核发送缓冲区(用户态 -> 内核态),以交付内核来发送数据,比如send函数;或是从内核TCP/UDP接收缓冲区中复制数据到用户缓冲区,以读取数据(内核态 -> 用户态)
  • 应用程序可以通过它们(socket提供的一些API)来修改内核中各层协议的某些头部信息或其他数据结构,从而精细地控制底层通信的行为

结语

参考书籍:《Linux高性能服务器编程》

文章仅作为个人学习笔记记录,记录从0到1的一个过程

希望对您有一点点帮助,如有错误欢迎小伙伴指正

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。