我开发了一个基于 Beancount 的账本托管服务 HostedBeans,欢迎大家来了解纯文本复式记账并试用我的服务。
查看源代码

TCP/IP 笔记(3.IP协议概述)

IP(Internet Protocol, 网际协议)工作在网际层,是TCP/IP协议族中最重要的组成部分,所有TCP/IP的数据包都通过IP来传输.

IP的功能

  • 定义数据报的格式,它是Internet的基本传输单位
  • 定义Internet的寻址方式
  • 在网络访问层和传输层之间传输数据
  • 决定数据报到远程主机的传输路径
  • 对数据报进行分解和重组

IP是一种非连接式协议,这意味着在传输数据前,两个端点之间不必交换控制信息(握手)来建立点对点连接.

对于需要面向连接的应用,须依赖于其他层的协议,如TCP.

IP是不可靠的协议,依赖于其他的协议来提供错误检测(ICMP,Internet Control Message Protocol, 互联网控制消息协议)和纠正(TCP)的能力.

IP数据报

数据报是包含控制信息(如接收者地址)的数据块.

IP会把数据报从一个物理网络转发到另一个物理网络,直到到达最终目标,每一个数据报的转发路径都是独立,与其他数据报没有关系.

下面是IPv4数据报的格式:

1

版本 IP的版本号,这里介绍的是IPv4, 应为4.

IHL Internet Header Lenght, IP报头长度,单位为32bit, 该字段最小值为5, 通过增加该字段长度,可以在图中的报头结构之后,再追加选项(选项部分要补齐到32bit的整数倍).

服务类型 目前被重新规定为DSCP(Differentiated Services Code Point, 差分服务代码点)占6bit和ECN(Explicit Congestion Notification, 显式拥塞通知)占2bit, 两者主要用于区分数据报的优先级、对延迟、吞吐率、可靠度的要求.

数据报全长 单位Byte.

编号 分段的编号,唯一地标识一个数据报的所有分段.

标记 与分段相关的标记,标记是否允许被分段是否为最后一个分段.

分段偏移量 该分段相对于原始数据报的偏移量,单位64bit.

TTL Time To Live, 存活时间,单位秒,但事实上通常每经过一个路由器会被减一.

协议号 指明所承载的数据使用的协议,常见的协议号如下:

校验和 报头校验和,用来核对报头是否被正确地传输,如果校验失败,则这个数据报会被丢弃.

源地址 目标地址 IPv4地址,二进制形式.

在通常的报头之后,还会有选项(由IHL决定)和实际的数据.

撰写评论

如希望撰写评论,请发邮件至 jysperm@gmail.com) 并注明文章标题,我会挑选对读者有价值的评论附加到文章末尾。

精子生于 1995 年,英文 ID jysperm.

订阅推送

通过 Telegram Channel 订阅我的博客日志、产品和项目的动态:

王子亭的博客 @ Telegram


通过邮件订阅订阅我的博客日志、产品和项目的动态(历史邮件):

该博客使用基于  Hexo  的  simpleblock  主题。博客内容使用  CC BY-NC-ND  授权发布。最后生成于 2024-04-08.