参考:https://blog.youkuaiyun.com/chaoshenzhaoxichao/article/details/79785318
https://blog.youkuaiyun.com/u011957758/article/details/72353485
TCP:TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由 IETF 的RFC 793定义。TCP 是面向连接的、可靠的流协议。流就是指不间断的数据结构,你可以把它想象成排水管中的水流。TCP 为了保证报文传输的可靠,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的字节发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据(假设丢失了)将会被重传。
UDP:UDP 是 User Datagram Protocol 的简称, 中文名是用户数据报协议,是 OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768 是 UDP 的正式规范。UDP 在 IP 报文的协议号是17。 UDP 协议全称是用户数据报协议,在网络中它与 TCP 协议一样用于处理数据包,是一种无连接的协议。UDP 有不提供数据包分组、组装和不能对数据包进行排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP 用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用 UDP 协议。 UDP 是不具有可靠性的数据报协议。细微的处理他会交给上层的应用去完成。在 UDP 的情况下,虽然可以确保发送消息的大小,确不能保证消息一定会到达。因此应用有时会根据自己的需要进行重发处理。
TCP和UDP的区别:
TCP | UDP | |
是否连接 | 面向连接 | 无连接 |
是否丢包重试 | 是,还可以对次序乱掉的分包进行顺序控制 | 不会进行丢包重试 |
模式 | 流模式 | 数据报 |
对应关系 | 一对一 | 支持一对一 |
头部开销 | 最小20字节 | 8字节 |
可靠性 | 全双工、可靠 | 不保证可靠 |
拥塞控制 | 有控制 | 有拥塞控制、网络出现拥塞时,不会降低源主机的速率。(适合实时应用,语音视频会议) |
资源要求 | TCP程序结构复杂 | 简单,需要资源较少 |
TCP/IP 通讯示例
在 TCP/IP 通讯过程中,每个分层,都会对所发送的数据附加一个首部,在这个首部中包含了该层必要的信息,如发送端的目标地址一节协议相关信息。通常,为协议提供的信息为包首部,所要发送的内容为数据。在下一层角度看,从上一层收到的包全部被认为是本层的数据。 假设甲给乙发送邮件,内容为:“早上好”。而从 TCP/IP 通信上看,是从一台计算机 A 向另一台计算机 B 发送邮件。我们通过这个例子来讲解一下 TCP/IP 通信的过程。
数据发送:
1、应用程序处理
启动应用程序新建邮件,将收件人邮箱填好,再由键盘输入“早上好”,鼠标点击“发送”按钮就可以开始 TCP/IP 的通信了。 首先,应用程序会对邮件内容进行编码处理,例如:UTF-8,GB2312 等。这些编码相当于 OSI 的表示层功能。应用在发送邮件的那一刻建立 TCP 连接,从而利用这个 TCP 连接发送数据。它的过程首先是将应用的数据发送给下一层的 TCP,在做实际的转发处理。
2、TCP模块处理
TCP根据应用的提示,负责建立连接,发送数据以及断开连接。TCP 提供将应用层发来的数据顺利发送至对端的可靠传输。为了实现 TCP 的这一功能,需要在应用层数据的前端附加一个 TCP 的首部。TCP 的首部中包括源端口号和目标端口号、序号。随后将附加了 TCP 首部的包再发送给 IP。
3、IP模块处理
IP 将 TCP 传过来的 TCP 首部和 TCP 数据合起来当做自己的数据,并在 TCP 首部的前端奸商自己的 IP 首部。IP 首部中包含接收端 IP 地址,发送端 IP 地址。随后 IP 包将被发送给连接这些路由器或主机网络接口的驱动程序,以实现真正的发送数据。
4、网络接口(以太网驱动)处理
从 IP 传过来的 IP 包,对于以太网卡来说就是数据。给这些数据附加上以太网首部并进行发送处理。以太网首部中包含接收端 MAC 地址,发送端 MAC 地址,以太网类型,以太网数据协议。根据上述信息产生的以太网数据将被通过物理层传输给接收端。
数据接收:
1、网络接口(以太网驱动)处理
从 IP 传过来的 IP 包,对于以太网卡来说就是数据。给这些数据附加上以太网首部并进行发送处理。以太网首部中包含接收端 MAC 地址,发送端 MAC 地址,以太网类型,以太网数据协议。根据上述信息产生的以太网数据将被通过物理层传输给接收端。
2、IP 模块处理
IP 模块收到 IP 包首部以及后面的数据部分以后,也做类似的处理。如果判断得出包首部的 IP 地址与自己的 IP 地址匹配,则可接受数据并从中查找上一层的协议。并将后面的数据传给 TCP 或者 UDP 处理。对于有路由的情况下,接收端的地址往往不是自己的地址,此时需要借助路由控制表,从中找出应该送到的主机或者路由器以后再进行转发数据。
3、TCP模块处理
在 TCP 模块中,首先会校验数据是否被破坏,然后检查是否在按照序号接收数据。最后检查端口号,确定具体的应用程序。数据接收完毕后,接收端则发送一个“确认绘制”给发送端。数据被完整地接收以后,会传给由端口号识别的应用程序。
4、应用程序处理
接收端应用程序会直接接收发送端发送的数据。通过解析数据可以获知邮件的内容信息。
中继器:物理层 网桥:数据链路层 路由器:网络层 网关:网络层以上