TCPIP协议详解
从字⾯意义上讲,有⼈可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。实际⽣活当中有时也确实就是指这两种协议。然⽽在很多情况下,它只是利⽤ IP 进⾏通信时所必须⽤到的协议的统称。具体来说,IP 或 ICMP、TCP 或 UDP、TELNET 或 FTP、以及 HTTP 等都属于TCP/IP 协议。
⼀图看完本⽂
⼀、计算机⽹络体系结构分层
计算机⽹络体系结构分层
计算机⽹络体系结构分层
tcpip协议pdf不难看出,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 和 UDP
TCP/IP 中有两个具有代表性的传输层协议,分别是 TCP 和 UDP。
TCP 是⾯向连接的、可靠的流协议。流就是指不间断的数据结构,当应⽤程序采⽤ TCP 发送消息时,虽然可以保证发送的顺序,但还是犹如没有任何间隔的数据流发送给接收端。TCP 为提供可靠性传输,实⾏“顺序控制”或“重发控制”机制。此外还具备“流控制(流量控制)”、“拥塞控制”、提⾼⽹络利⽤率等众多功能。
UDP 是不具有可靠性的数据报协议。细微的处理它会交给上层的应⽤去完成。在 UDP 的情况下,虽然可以确保发送消息的⼤⼩,却不能保证消息⼀定会到达。因此,应⽤有时会根据⾃⼰的需要进⾏重发处理。
TCP 和 UDP 的优缺点⽆法简单地、绝对地去做⽐较:TCP ⽤于在传输层有必要实现可靠传输的情况;⽽在⼀⽅⾯,UDP 主要⽤于那些对⾼速传输和实时性有较⾼要求的通信或⼴播通信。TCP 和 UDP 应该根据应⽤的⽬的按需使⽤。
1. 端⼝号
数据链路和 IP 中的地址,分别指的是 MAC 地址和 IP 地址。前者⽤来识别同⼀链路中不同的计算机,后者⽤来识别 TCP/IP ⽹络中互连的主机和路由器。在传输层也有这种类似于地址的概念,那就是端⼝号。端⼝号⽤来识别同⼀台计算机中进⾏通信的不同应⽤程序。因此,它也被称为程序地址。
1.1 根据端⼝号识别应⽤
⼀台计算机上同时可以运⾏多个程序。传输层协议正是利⽤这些端⼝号识别本机中正在进⾏通信的应⽤程序,并准确地将数据传输。
通过端⼝号识别应⽤
1.2 通过 IP 地址、端⼝号、协议号进⾏通信识别
仅凭⽬标端⼝号识别某⼀个通信是远远不够的。
通过端⼝号、IP地址、协议号进⾏通信识别
① 和② 的通信是在两台计算机上进⾏的。它们的⽬标端⼝号相同,都是80。这⾥可以根据源端⼝号加以区分。
③ 和 ① 的⽬标端⼝号和源端⼝号完全相同,但它们各⾃的源 IP 地址不同。
此外,当 IP 地址和端⼝号全都⼀样时,我们还可以通过协议号来区分(TCP 和 UDP)。
1.3 端⼝号的确定
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论