我是靠谱客的博主 冷静魔镜,最近开发中收集的这篇文章主要介绍TCP/IP 协议族简述,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

网络协议通常都是分层开发的,一个协议族(protocol suite)则是不同 layer(层)上的协议的集合,TCP/IP 协议族是我们常用的一个协议族,其包含 4 个 layer:

  1. Link layer 也被叫做 Data link layer(数据链路层)或者 Network interface layer(网络接口层)。此 Layer 主要包括设备的驱动(device driver)和 NIC(网卡)。这一层主要用来解决物理接口上硬件的细节问题
  2. Network layer(网络层)处理 Packet(分组)在网络中移动,例如 Packet 的路由就发生在此 Layer。TCP/IP 协议族里面,IP 协议就在此 Layer 上
  3. Transport layer(传输层)主要解决两台主机之间数据流动的问题,在 TCP/IP 协议族里面,有两个非常不同的 Transport 协议:TCP 和 UDP
  4. Application layer(应用层)主要处理特定的应用程序细节。不同的 TCP/IP 实现下都会提供一些通用的程序:Telnet、FTP、SMTP 等

各层协议:
Application layer — Telnet、FTP、HTTP、SMTP、DNS 等
Transport layer — TCP、UDP
Network layer — IP、ICMP、IGMP

Transport layer 协议:
通常来说,程序员最关心了两个协议就是 Transport layer 的 TCP 和 UDP 协议了:

  1. TCP 协议提供了两台主机之间可靠的通讯,使得 Application layer 无需关注这些细节
  2. UDP 协议只是为 Application layer 提供非常简单的服务,它只是将 datagrams(数据报)从一台主机发送到另外一台,并不保证数据能够到达另一端,可靠性必须要由 Application layer 来提供

TCP/IP 协议族协议分层图示:
tcp/ip 协议族协议分层

数据的封装
当一个应用程序使用 TCP 发送数据的时候,数据被发送到协议栈(protocol stack)上,然后通过各个 Layer 最终以 Bits 流发送到网络上。每个 Layer 都会在数据上加一些 Header 信息(有时候还需要加上尾部信息),下图显示了这个过程:

数据的封装

其中:

  1. TCP 发送给 IP 的数据单元被叫做 TCP Segment(TCP 报文段)
  2. IP 发送给网络接口的数据单元被叫做 IP Packet(IP 分组)
  3. 通过以太网传送的 bits 流被叫做 Frame(帧)

UDP 发送给 IP 的数据单元被叫做 UDP Datagram(UDP 数据报),UDP Header 为 8 个字节。

UDP 和 TCP 都使用了一个 2 个字节的端口号(port numbers)来标识一个应用程序,UDP 和 TCP 把源和目标 port numbers 保存在 Header 中。

数据的分用(Demultiplexing)
当主机接收到数据的时候,数据就从协议栈的底部向上走,逐步去掉各个协议加上去的 Header。每个协议盒都会查看 Header 的标识来决定上层是由哪一个协议盒来接受数据,这被叫做数据的分用:
数据的分用

最后

以上就是冷静魔镜为你收集整理的TCP/IP 协议族简述的全部内容,希望文章能够帮你解决TCP/IP 协议族简述所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部