tcpip协议 tcpip协议栈


tcpip协议 tcpip协议栈


专注于Java领域优质技术,欢迎关注
作者:涤生_Woo
一图看完本文
一、 计算机网络体系结构分层
计算机网络体系结构分层
计算机网络体系结构分层
不难看出,TCP/IP 与 OSI 在分层模块上稍有区别 。OSI 参考模型注重“通信协议必要的功能是什么” , 而 TCP/IP 则更强调“在计算机上实现协议应该开发哪种程序” 。
二、 TCP/IP 基础1. TCP/IP 的具体含义
从字面意义上讲 , 有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议 。实际生活当中有时也确实就是指这两种协议 。然而在很多情况下,它只是利用 IP 进行通信时所必须用到的协议群的统称 。具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于 TCP/IP 协议 。他们与 TCP 或 IP 的关系紧密 , 是互联网必不可少的组成部分 。TCP/IP 一词泛指这些协议,因此,有时也称 TCP/IP 为网际协议群 。
互联网进行通信时 , 需要相应的网络协议,TCP/IP 原本就是为使用互联网而开发制定的协议族 。因此 , 互联网的协议就是 TCP/IP,TCP/IP 就是互联网的协议 。
网际协议群
2. 数据包
包、帧、数据包、段、消息
以上五个术语都用来表述数据的单位 , 大致区分如下:
包可以说是全能性术语;帧用于表示数据链路层中包的单位;数据包是 IP 和 UDP 等网络层以上的分层中包的单位;段则表示 TCP 数据流中的信息;消息是指应用协议中数据的单位 。每个分层中,都会对所发送的数据附加一个首部,在这个首部中包含了该层必要的信息,如发送的目标地址以及协议相关信息 。通常,为协议提供的信息为包首部,所要发送的内容为数据 。在下一层的角度看 , 从上一层收到的包全部都被认为是本层的数据 。

数据包首部
网络中传输的数据包由两部分组成:一部分是协议所要用到的首部,另一部分是上一层传过来的数据 。首部的结构由协议的具体规范详细定义 。在数据包的首部,明确标明了协议应该如何读取数据 。反过来说,看到首部,也就能够了解该协议必要的信息以及所要处理的数据 。包首部就像协议的脸 。
3. 数据处理流程
下图以用户 a 向用户 b 发送邮件为例子:
数据处理流程
① 应用程序处理 首先应用程序会进行编码处理 , 这些编码相当于 OSI 的表示层功能; 编码转化后,邮件不一定马上被发送出去,这种何时建立通信连接何时发送数据的管理功能,相当于 OSI 的会话层功能 。② TCP 模块的处理 TCP 根据应用的指示,负责建立连接、发送数据以及断开连接 。TCP 提供将应用层发来的数据顺利发送至对端的可靠传输 。为了实现这一功能,需要在应用层数据的前端附加一个 TCP 首部 。③ IP 模块的处理 IP 将 TCP 传过来的 TCP 首部和 TCP 数据合起来当做自己的数据,并在 TCP 首部的前端加上自己的 IP 首部 。IP 包生成后,参考路由控制表决定接受此 IP 包的路由或主机 。④ 网络接口(以太网驱动)的处理 从 IP 传过来的 IP 包对于以太网来说就是数据 。给这些数据附加上以太网首部并进行发送处理,生成的以太网数据包将通过物理层传输给接收端 。⑤ 网络接口(以太网驱动)的处理 主机收到以太网包后 , 首先从以太网包首部找到 MAC 地址判断是否为发送给自己的包,若不是则丢弃数据 。如果是发送给自己的包,则从以太网包首部中的类型确定数据类型,再传给相应的模块,如 IP、ARP 等 。这里的例子则是 IP。⑥ IP 模块的处理 IP 模块接收到 数据后也做类似的处理 。从包首部中判断此 IP 地址是否与自己的 IP 地址匹配,如果匹配则根据首部的协议类型将数据发送给对应的模块,如 TCP、UDP 。这里的例子则是 TCP 。另外吗,对于有路由器的情况,接收端地址往往不是自己的地址,此时,需要借助路由控制表,在调查应该送往的主机或路由器之后再进行转发数据 。⑦ TCP 模块的处理 在 TCP 模块中,首先会计算一下校验和,判断数据是否被破坏 。然后检查是否在按照序号接收数据 。最后检查端口号,确定具体的应用程序 。数据被完整地接收以后 , 会传给由端口号识别的应用程序 。⑧ 应用程序的处理 接收端应用程序会直接接收发送端发送的数据 。通过解析数据,展示相应的内容 。三、传输层中的 TCP 和 UDPTCP/IP 中有两个具有代表性的传输层协议 , 分别是 TCP 和 UDP 。

推荐阅读