TCP、UDP详解

本文介绍了TCP和UDP协议,TCP是面向连接、可靠的流协议,UDP是无连接、不可靠协议。还给出TCP/IP通讯示例,阐述数据发送和接收过程,包括应用程序、TCP模块、IP模块和网络接口处理,最后提及中继器、网桥、路由器和网关所在分层。

参考: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的区别:

 TCPUDP
是否连接面向连接无连接
是否丢包重试是,还可以对次序乱掉的分包进行顺序控制不会进行丢包重试
模式流模式数据报
对应关系一对一支持一对一
头部开销最小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、应用程序处理

接收端应用程序会直接接收发送端发送的数据。通过解析数据可以获知邮件的内容信息。

 

中继器:物理层     网桥:数据链路层           路由器:网络层              网关:网络层以上

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值