IP协议详解

IP协议详解
XIP协议属于网络层协议,所有的TCP, UDP, ICMP, IGMP数据都通过IP数据报传输。IP提供了一种不可靠,无连接的数据包交付服务。依赖其他层的协议进行差错控制。
不可靠: IP数据报不保证能成功的到达目的地,如果出现错误则选择丢弃该数据,然后发送ICMP消息报给信源端
无连接: IP不提供任何后续数据报的状态信息,每个数据报处理都是独立的。如果一个信源发送了连续的两个数据报,每个数据报选择独立的路由,两个数据可能不同时到达。IP通信双方都不长久地维持对方的任何信息。这样上层协议每次发送数据的时候,都必须明确指定对方的IP地址。
TCP 是通过 IP 数据报传输
TCP 是传输层协议,IP 是网络层(或称网际层)协议。虽然它们处于不同层,但 TCP 的数据是封装在 IP 数据报中进行传输的,这就是为什么说“TCP 是通过 IP 数据报传输”的原因。
协议封装关系
- IP数据报如同一个标准化的“信封“,其首部中的“协议类型“字段(8位)用于标识载荷数据的类型:
- 6 = TCP
- 17 = UDP
- 1 = ICMP
- 2 = IGMP
- 例如:当该字段值为6时,接收方网络层就知道要把数据交给传输层的TCP协议处理
TCP/IP 分层模型回顾
TCP/IP 模型通常分为四层:
层级 | 协议示例 | 功能 |
---|---|---|
应用层 | HTTP, FTP, DNS | 提供应用程序接口和通信服务 |
传输层 | TCP, UDP | 负责端到端的数据传输 |
网络层(网际层) | IP, ICMP | 负责主机到主机的数据路由 |
网络接口层(链路层) | Ethernet | 负责物理介质上的数据传输 |
TCP 是如何通过 IP 数据报传输的?
TCP 负责将应用层的数据分成段(segments),并加上 TCP 头部信息(如源端口、目标端口、序列号等)。 这些 TCP 段会被交给下一层 —— IP 层。 IP 层将 TCP 段作为数据部分,加上自己的头部(如源 IP、目标 IP)形成一个 IP 数据报(datagram)。 然后这个 IP 数据报再被传给链路层(如以太网),加上帧头和帧尾,最终通过物理网络发送出去。
举个例子来类比
想象你要寄一封信:
- 你写的内容是 应用层数据(比如一封情书)
- 你把它放进信封,写上收件人和寄件人的地址,这是 TCP 层的段
- 然后邮局又加了一个外包装,上面写了城市地址,这是 IP 层的数据报
- 最后快递员装车运走,这相当于 链路层的传输
每一层都只关心自己那一层的事情,但数据是逐层封装、一起传送的。
所以,“TCP 是通过 IP 数据报传输”这句话的意思是
- TCP 的数据(段)是作为 IP 数据报的“载荷”(payload)存在的。
- IP 负责把 TCP 段从一台主机传送到另一台主机。
- TCP 则负责在这两台主机之间提供可靠的、有序的、基于端口的通信。
总结
IP协议
不可靠性: IP协议负责将数据报从源地址发送到目的地址。它并不保证数据报能够成功到达目的地,也不保证数据报按顺序到达。如果一个数据报在网络中丢失或损坏,IP不会自动重新发送这个数据报。
**无连接:在发送数据报之前,IP不需要先建立连接。每个数据报都是独立处理的,即使两个数据报是属于同一个通信会话,它们也可能通过网络的不同路径到达目的地。
TCP协议
可靠性: 尽管IP协议本身是不可靠的,但TCP协议通过一系列机制确保了数据传输的可靠性。这些机制包括序列号、确认应答、超时重传等。例如,当发送方发送数据段后,它会等待接收方的确认消息(ACK)。如果没有在规定时间内收到确认消息,发送方会认为该数据段丢失,并重新发送。
面向连接: 在进行数据传输之前,TCP需要通过三次握手来建立一个连接。这确保了双方都准备好进行数据传输。同样,在结束通信时,TCP还需要通过四次挥手来断开连接,以确保所有数据都被正确接收并处理。
结合使用
虽然IP提供了基本的数据报传输服务,但是它的不可靠性和无连接特性使得它不适合直接用于大多数应用。这就是为什么我们通常使用TCP这样的传输层协议。TCP利用IP提供的服务,同时添加了自己的控制机制,以提供可靠的、有序的数据传输服务。因此,即便底层的IP协议不可靠,TCP仍然能够提供可靠的数据传输服务。这样,不同的应用程序可以根据自己的需求选择合适的传输层协议(如TCP或UDP)。