我开发了一个基于 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决定)和实际的数据.

TCP/IP 笔记(2.TCP/IP模型)

上一篇提到的TCP/IP模型:

下面是四层模型,和每一层上所传输的数据的术语.

  • 网络访问层 – 帧(frame)
  • 网际层 – 数据报(datagram)
  • 主机对主机传输层 – TCP:段(segment) UDP:包(packet)
  • 应用层 – TCP:流(stream) UDP:消息(message)

网络访问层

与OSI模型的前三层对应,隐藏物理设备的细节,相当于物理设备的驱动.

将IP数据报封装成适合物理设备传输的帧.

将IP地址转换为物理地址(ARP协议,Address Resolution Protocol,地址解析协议), 为传送IP数据报提供基础.

网际层

本层最重要的是IP协议,目前被广泛应用的是IPv4, 还有它的替代品IPv6. 本系列笔记暂时只涉及IPv4.

无论是上层协议(TCP/UDP), 还是下层协议(ARP), 都使用IP来传输数据, TCP/IP模型中所有的数据包必定经过IP.

术语数据包在这里,以及以后,笼统地表示一段自成整体的数据.

主机对主机传输层

简称传输层,本层最重要的是TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议).

  • TCP提供可靠的数据传输服务,而且能侦测、更正端点之间的错误.
  • UDP提供低成本、非连接式的数据传输服务.

应用层

应用层就是应用程序实际交流数据的层次,协议有很多种,取决于具体的应用程序,很多应用程序都会定义属于自己的应用层协议.

常见的开放协议有SMTP, FTP, HTTP, DNS, Telnet等等.

TCP/IP 笔记(1.概述)

TCP/IP代表一套数据通讯协议的组合. TCP(Transmission Control Protocol, 传输控制协议)和IP(Internet Protocol, 网际协议)是其中最重要的两种协议. 它们是目前使用最广泛的协议组合,全球性Internet的基础.

TCP/IP是统一的开放标准,不受制于特定的硬件或操作系统.

Internet协议多由IETF(Internet Engineering Task Force,互联网工程任务小组)以RFC(Request For Comments,征求修正意见书)的形式发表.

OSI参考模型(Open System Interconnection Reference Model,开放式通信系统互联参考模型)

(由底层至上层)

更多信息:http://zh.wikipedia.org/wiki/OSI%E6%A8%A1%E5%9E%8B

  • 物理层(Physical Layer)

定义传输数据的物理规格(电平、电压、接口和引脚等),物理层传输的是原始比特流,物理层需要保证对方能够正确地解析比特流,如约定哪个引脚发送的多少电压表示0或1, 一个bit持续多少微秒.

  • 数据链路层(Data Link Layer)

保证数据能在物理层正确地被传输.

  • 网络层(Network Layer)

管理网络间的连接、寻址,屏蔽底层的细节. IP通常被认为在这一层.

  • 传输层(Transport Layer)

保证接收方能够正确无误、按顺序接到发送方的数据. TCP通常被认为在这一层.

  • 会话层(Session Layer)

配合应用层管理会话式,某些协议允许在一个连接中进行多个会话. 而在某些协议中(如HTTP/1.0)连接和会话并无区别.

  • 表示层(Presentation Layer)

双方就数据的格式达成共识,如压缩和加密.

  • 应用层(Appliction Layer)

应用程序交互的实际内容.

TCP/IP模型

(由底层至上层)

更多信息:http://zh.wikipedia.org/wiki/TCP/IP%E5%8D%8F%E8%AE%AE

TCP/IP并没有一个标准的模型,通常认为它有四层,但不同资料对四层的划分并不相同.

  • 网络访问层(Network Access Layer)
  • 网际层(Internet Layer)
  • 主机对主机传输层(Host-to-Host Transport Layer)
  • 应用层

无论是OSI还是TCP/IP, 数据都是逐层传输的.

发送方的数据,由应用层,逐层向下,经过每层时被加上该层的报头或进行封装.

接收方由下至上,每层剥离报头与数据,并将数据交给正确的上层应用.

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

订阅推送

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

王子亭的博客 @ Telegram


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

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