tcpip协议概述(1)--综述
⼀.计算机⽹络体系结构
计算机⽹络体系结构,我们先通过下⾯⼏个图认识下:
上⾯三幅结构图能够清晰的看出tcp osi参考模型及tcp/ip框架
⼆,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 端⼝号的确定
标准既定的端⼝号:这种⽅法也叫静态⽅法。它是指每个应⽤程序都有其指定的端⼝号。但并不是说可以随意使⽤任何⼀个端⼝号。例如 HTTP、FTP、TELNET 等⼴为使⽤的应⽤协议中所使⽤的端⼝号就是固定的。这些端⼝号被称为知名端⼝号,分布在 0~1023 之间;除知名端⼝号之外,还有⼀些端⼝号被正式注册,它们分布在 1024~49151 之间,不过这些端⼝号可⽤于任何通信⽤途。
时序分配法:服务器有必要确定监听端⼝号,但是接受服务的客户端没必要确定端⼝号。在这种⽅法下,客户端应⽤程序完全可以不⽤⾃⼰设置端⼝号,⽽全权交给操作系统进⾏分配。动态分配的端⼝号范围在 49152~65535 之间。
1.4 端⼝号与协议
端⼝号由其使⽤的传输层协议决定。因此,不同的传输层协议可以使⽤相同的端⼝号。
此外,那些知名端⼝号与传输层协议并⽆关系。只要端⼝⼀致都将分配同⼀种应⽤程序进⾏处理。
tcpip协议pdf2. UDP
UDP 不提供复杂的控制机制,利⽤ IP 提供⾯向⽆连接的通信服务。
并且它是将应⽤程序发来的数据在收到的那⼀刻,⽴即按照原样发送到⽹络上的⼀种机制。即使是出现⽹络拥堵的情况,UDP 也⽆法进⾏流量控制等避免⽹络拥塞⾏为。
此外,传输途中出现丢包,UDP 也不负责重发。
甚⾄当包的到达顺序出现乱序时也没有纠正的功能。
如果需要以上的细节控制,不得不交由采⽤ UDP 的应⽤程序去处理。
UDP 常⽤于⼀下⼏个⽅⾯:1.包总量较少的通信(DNS、SNMP等);2.视频、⾳频等多媒体通信(即时通信);3.限定于 LAN 等特定⽹络中的应⽤通信;4.⼴播通信(⼴播、多播)。
3. TCP
TCP 与 UDP 的区别相当⼤。它充分地实现了数据传输时各种控制功能,可以进⾏丢包时的重发控制,还可以对次序乱掉的分包进⾏顺序控制。⽽这些在 UDP 中都没有。
此外,TCP 作为⼀种⾯向有连接的协议,只有在确认通信对端存在时才会发送数据,从⽽可以控制通信流量的浪费。
根据 TCP 的这些机制,在 IP 这种⽆连接的⽹络上也能够实现⾼可靠性的通信( 主要通过检验和、序列号、确认应答、重发控制、连接管理以及窗⼝控制等机制实现)。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。