TCP与UDP

简述TCP与UDP

TCP(Transmission Control Protocol)是面向连接的、可靠的流协议。
UDP(User Datagram Protocol)是面向无连接的、不具有可靠性的数据报协议。

TCP与UDP对比

很多初学者可能都认为,TCP是面向连接的而且是可靠的协议,所以TCP一定优于UDP。在应用中也应该首选TCP作为传输层的协议。其实不是这样的,TCP与UDP各有其优劣。
TCP的特点是面向有连接,并且具备顺序控制、重复控制等机制,所以它可以为应用提供可靠的传输。
UDP的特点是无需建立连接,且不重发数据,所以可以用于那些对高速传输和对实时性有较高要求的通信或广播通信。
我们举个例子,假如你现在使用IP电话进行通话。那么,这个IP电话用哪种传输层协议更好呢?显然是UDP协议更能满足其需求,UDP实时性好而且就算丢包了也不会重发。但TCP不同,首先它的实时性不如UDP好,而且,如果发生了丢包的话它还会进行重发,这样IP电话的通话效果肯定会很不好。收听到的信息一定乱七八糟。用UDP协议就算发生丢包不重新发送,少量丢包也并不会影响什么。
所以说,究竟何时使用何种协议要视具体情况而定,不能以一概之。

端口号

定义

数据链路与IP中的地址分别是MAC地址与IP地址。传输层中也有类似于这样的地址的概念,用于识别同一台计算机中的不同的应用程序。叫做端口。端口也可以被看作是程序地址。

通信识别

我们是如果确定一个通信的呢?
现在假设我们用一台客户端电脑访问新浪首页,这时候我们打开两个浏览器分别进行访问,两个浏览器当然可以做不同的操作,所以是两个不同的通信。这个时候我们访问的都是新浪服务器的80端口。所以,现在我们的源IP地址、目的IP地址、目的端口地址、协议是确定的。可是这时候还是无法确定一个通信。实际上这个时候是根据源端口号确定两个不同的通信的。
就是说,要识别一个通信需要五个要素:源IP地址、目标IP地址、协议类型、源端口号、目标端口号。

端口号的确定

标准既定端口号

知名端口号一般由0到1023的数字分配而成。应用程序应避免使用知名端口号进行既定目的之外的通信,以免产生冲突。
除了知名端口号,还有一些端口号也被正式注册。它们分布在1024到49151的数字之间。不过,这些端口号可用于任何通信用途。

时序分配法

一般客户端在访问服务器端时端口号都是时序分配的,也就是操作系统来进行分配,操作系统为没个应用程序分配互不冲突的端口号。动态分配的取值为49152到65535之间。

TCP的一些特点

通过序列号与确认应答提高可靠性

在TCP中,当发送端的数据到达接收主机时,接收端主机会返回一个已收到消息的通知。这个消息叫做确认应答。

确定重发时间

重发超时是指在重新发送数据之前,等待确认消息到达的时间间隔。所以确定重发时间很重要,定的过长会降低整体传输效率,定的过短会容易发生误操作。最理想的是,可以找到一个最小的时间,保证确认应答一定能在整个时间之内返回。当然,这是理想情况。实际上是使用公式:重发超时=往返时间+偏差。所以重发超时是一个不那么精确的数字,只能是尽可能的接近于理想。

连接管理

连接管理就是“三次握手”与“四次挥手”。
建立连接时是“三次握手”:客户端向服务器端发送SYN,服务器端返回SYN+ACK,客户端再向服务器端发送ACK。连接建立成功。
断开连接时是“四次挥手”:客户端向服务器发送FIN,服务器端返回ACK,服务器端向客户端发送FIN,客户端返回ACK。连接断开成功。

TCP以段为单位发送数据

在建立TCP连接的同时,也可以确定发送数据包的单位。最理想的情况是IP中不会被分片处理的最大数据长度。

窗口控制

窗口控制是一种提高传输效率的方法。有了窗口控制,就无需每发送一次数据包都要进行一次确认了。

拥塞控制

慢启动算法进行拥塞控制。当TCP通信开始以后,网络吞吐量会逐渐上升,但是随着网络拥堵的发生,吞吐量也会急速下降。于是会再次进入吞吐量慢慢上升的感觉。因此所谓的TCP的吞吐量特点就好像是在逐步占领网络带宽的感觉。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值