TCP、UDP协议学习总结

                                              TCP、UDP协议学习总结

TCP/IP 协议族

     互联网协议族(英语:Internet Protocol Suite,缩写IPS) 是一个网络通信模型,以及一整个网络传输协议家族,为互联网的基础通信架构。它常被通称为TCP/IP协议族(英语:TCP/IP Protocol Suite,或TCP/IP Protocols),简称TCP/IP。

     TCP/IP提供点对点的链接机制,将数据应该如何封装、定址、传输、路由以及在目的地如何接收,都加以标准化。它将软件通信过程抽象化为四个抽象层,采取协议堆栈的方式,分别实现出不同通信协议。

 

基于TCP/IP的两主机通信

https://upload.wikimedia.org/wikipedia/commons/thumb/c/c4/IP_stack_connections.svg/490px-IP_stack_connections.svg.png

两个因特网主机通过两个路由器和对应的层连接。各主机上的应用通过一些数据信道相互执行读取操作。

 

TCP(传输控制协议)与UDP(用户数据报协议)的异同

     有两种类型的Internet协议(IP)负载。 它们是TCP或传输控制协议和UDP或用户数据报协议。 TCP是面向连接的 - 一旦建立连接,数据就可以双向发送。 UDP是一种更简单的无连接Internet协议。

     TCP和UDP都是用于通过Internet发送数据位(称为数据包)的协议。 它们都建立在Internet协议之上。 换句话说,无论您是通过TCP还是UDP发送数据包,该数据包都会被发送到IP地址。 这些数据包的处理方式类似,因为它们从您的计算机转发到中间路由器并转发到目的地。

TCP

     TCP和UDP不是唯一在IP之上工作的协议。 但是,它们是使用最广泛的。 广泛使用的术语“TCP / IP”指的是TCP over IP。           UDP over IP也可以称为“UDP / IP”,尽管这不是常用术语。

     TCP代表传输控制协议。 它是Internet上最常用的协议。

     加载网页时,您的计算机会将TCP数据包发送到Web服务器的地址,要求它将网页发送给您。 Web服务器通过发送TCP数据包进行响应,您的Web浏览器将这些数据包拼接在一起形成网页并显示给您。 当您单击链接,登录,发表评论或执行任何其他操作时,Web浏览器会将TCP数据包发送到服务器,然后服务器会发回TCP数据包。 TCP不是单向通信,因为远程系统发回数据包以确认收到了数据包。

      TCP保证收件人将通过编号顺序接收数据包。 收件人将邮件发送回发件人,说明收到了邮件。 如果发件人没有得到正确的响应,它将重新发送数据包以确保收件人收到它们。 还会检查数据包是否有错误。 TCP就是这种可靠性 - 跟踪TCP发送的数据包,因此传输过程中没有数据丢失或损坏。 这就是为什么即使存在网络不稳定,文件下载也不会被破坏。 当然,如果收件人完全脱机,您的计算机将放弃,您将看到一条错误消息,指出它无法与远程主机通信。

 

UDP

     UDP代表用户数据报协议 - 数据报与信息包相同。  

 

     使用UDP时,数据包只是发送给收件人。 发件人不会等待确保收件人收到数据包 - 它将继续发送下一个数据包。 如果收件人错过了一些UDP数据包,收件人将无法再次请求这些数据包。 无法保证收件人获得所有数据包,如果错过了数据包,则无法再次请求数据包,但丢失所有这些开销意味着计算机可以更快地进行通信。

当需要速度并且不需要纠错时使用UDP。 例如,UDP经常用于直播和在线游戏。

小总结

 

TCP

UDP

首字母

Transmission Control Protocol

User Datagram Protocol or Universal Datagram Protocol

连接

TCP是面向连接的协议。

UDP是一种无连接协议。

功能

随着消息从一台计算机传到另一台计算机。 这是基于连接的。

UDP也是用于消息传输或传输的协议。 这不是基于连接的,这意味着一个程序可以将一大包数据包发送到另一个程序,这将是关系的结束。

使用

TCP适用于需要高可靠性的应用,传输时间相对不太重要。

UDP适用于需要快速,高效传输的应用,例如游戏。 UDP的无状态特性对于回答来自大量客户端的小型查询的服务器也很有用。

被其他协议使用

HTTP, HTTPs, FTP, SMTP, Telnet

DNS, DHCP, TFTP, SNMP, RIP, VOIP.

数据包是否排序

TCP按指定的顺序重新排列数据包。

UDP没有固有的顺序,因为所有数据包都是相互独立的。 如果需要排序,则必须由应用层管理。

Speed of transfer

The speed for TCP is slower than UDP.

UDP is faster because error recovery is not attempted. It is a "best effort" protocol.

Reliability

绝对保证传输的数据保持不变,并按照发送的顺序到达。

无法保证发送的消息或数据包完全无法访问。

Header Size

TCP包头大小为20个字节

UDP包头大小为8个字节。

Common Header Fields

Source port, Destination port, Check Sum

Source port, Destination port, Check Sum

Streaming of data

Data is read as a byte stream, no distinguishing indications are transmitted to signal message (segment) boundaries.

Packets are sent individually and are checked for integrity only if they arrive. Packets have definite boundaries which are honored upon receipt, meaning a read operation at the receiver socket will yield an entire message as it was originally sent.

Weight

TCP is heavy-weight. TCP requires three packets to set up a socket connection, before any user data can be sent. TCP handles reliability and congestion control.

UDP is lightweight. There is no ordering of messages, no tracking connections, etc. It is a small transport layer designed on top of IP.

Data Flow Control

TCP does Flow Control. TCP requires three packets to set up a socket connection, before any user data can be sent. TCP handles reliability and congestion control.

UDP does not have an option for flow control

Error Checking

TCP does error checking and error recovery. Erroneous packets are retransmitted from the source to the destination.

UDP does error checking but simply discards erroneous packets. Error recovery is not attempted.

Fields

1. Sequence Number, 2. AcK number, 3. Data offset, 4. Reserved, 5. Control bit, 6. Window, 7. Urgent Pointer 8. Options, 9. Padding, 10. Check Sum, 11. Source port, 12. Destination port

1. Length, 2. Source port, 3. Destination port, 4. Check Sum

认包

确认接收,发送确认包

No Acknowledgment

Handshake

SYN, SYN-ACK, ACK

No handshake (connectionless protocol)

拥塞控制

什么是拥堵? 出现拥堵的原因?

     在分组交换网络中,在节点(提供负载的设备)中引入分组,并且节点又将分组(即吞吐量)转发到网络中。

当设备“提供的负载”超过一定限度时,吞吐量急剧下降。 这种现象称为拥堵。

     在分组交换网络的每个节点中,维护队列(或缓冲器)以接收和发送分组(存储/转发网络)。 由于网络流量拥挤,可能存在队列溢出的情况。 结果将重新传输几个分组,这进一步增加了网络流量。 这最终导致拥堵。

防止拥塞的方法

拥塞控制是指用于控制或防止拥塞的技术。 拥塞控制技术大致可分为两类:

https://cdncontribute.geeksforgeeks.org/wp-content/uploads/congestion-control.jpg

1)开环拥塞控制(Open Loop Congestion Control)

应用开环拥塞控制策略以防止拥塞发生之前的拥塞。 拥塞控制由源(source device)或目标(destination device)处理。

开环拥塞控制采用的政策 -

 

策略一:重传策略

这是重新发送数据包的策略。 如果发送方认为发送的数据包丢失或损坏,则需要重新发送数据包。 该传输可能增加网络中的拥塞。

为了防止拥塞,必须设计重传定时器以防止拥塞并且还能够优化效率。

策略二:窗口控制重传策略

     发送方的窗口类型也可能影响拥塞。 重新发送Go-back-n窗口中的几个分组,尽管可以在接收器侧成功接收一些分组。 这种重复可能会增加网络拥塞并使其变得更糟。

因此,应采用选择性重复窗口,因为它发送可能已丢失的特定数据包。

策略三:放弃策略

     路由器采用的良好丢弃策略是路由器可以防止拥塞,同时部分丢弃损坏或不太敏感的包,并且还能够保持消息的质量。

在音频文件传输的情况下,路由器可以丢弃较不敏感的分组以防止拥塞并且还保持音频文件的质量。

 

策略四:确认策略

     由于确认也是网络中负载的一部分,因此接收器强加的确认策略也可能影响拥塞。 可以使用几种方法来防止与确认相关的拥塞。

接收方应发送N个数据包的确认,而不是发送单个数据包的确认。 只有在必须发送数据包或计时器到期时,接收方才应发送确认。

策略五:准入策略

     在准入策略中,应该使用一种机制来防止拥塞。 流中的交换机应首先检查网络流的资源需求,然后再进行传输。 如果网络中存在拥塞或拥塞的可能性,路由器应拒绝建立虚拟网络连接以防止进一步拥塞。

小总结:采用上述所有策略以预防网络中发生拥塞。

2)闭环拥塞控制

     闭环拥塞控制技术用于在发生拥塞后处理或缓解拥塞。 有的协议使用了几种技术; 如下所示:

策略一:Backpressure

Backpressure是一种拥塞节点停止从上游节点接收数据包的技术。 这可能导致上游节点变得拥塞并拒绝从上述节点接收数据。 Backpressure是一种节点到节点的拥塞控制技术,它在数据流的相反方向传播。 Backpressure技术仅可应用于虚拟电路,其中每个节点具有其上游节点的信息。

 

在上图中,第三节点拥塞并且停止接收分组,因此第二节点可能由于输出数据流的减慢而变得拥塞。 类似地,第一节点可能会变得拥挤并通知源减慢速度。

 

策略二:隐式信令

在隐式信令中,拥塞节点和源之间没有通信。消息来源猜测网络中存在拥塞。例如,当发送方发送多个数据包并且暂时没有确认时,一个假设是存在拥塞。

 

策略三:显式信号

在显式信号中,如果节点经历拥塞,则它可以明确地将数据包发送到源或目的地以通知拥塞。 阻塞分组和显式信号之间的区别在于,信号包含在承载数据的分组中,而不是像阻塞分组技术那样创建不同的分组。

显式信令可以在向前或向后方向上发生。

前向信令:在前向信令信号中,在拥塞方向上发送。 目的地被警告拥堵。 在这种情况下,接收方采用策略来防止进一步拥塞。

后向信令:在后向信令中,信号以拥塞的相反方向发送。 消息来源被警告拥堵,需要放慢速度。

参考资料

[1].https://zh.wikipedia.org/wiki/TCP/IP%E5%8D%8F%E8%AE%AE%E6%97%8F

[2].https://zh.wikipedia.org/wiki/%E6%95%B0%E6%8D%AE%E6%8B%A5%E5%A1%9E%E6%8E%A7%E5%88%B6%E5%8D%8F%E8%AE%AE

[3]. https://support.holmsecurity.com/hc/en-us/articles/212963869-What-is-the-difference-between-TCP-and-UDP-

[4]. https://www.diffen.com/difference/TCP_vs_UDP

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值