计算机网络五层模型之运输层

一、运输层(传输层)

         运输层,也叫传输层,实现端对端的传输,应用层进程得到消息后交给传输层变成数据段,然后交予网络层。 
它位于网络层之上,应用层之下,为运行在不同主机上的应用进程之间提供了逻辑通信功能。

 

 

两种不同的运输协议(TCP和UDP):

(1)当运输层采用面向连接的 TCP 协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。

(2)当运输层采用无连接的 UDP 协议时,这种逻辑通信信道是一条不可靠信道。

 

TCP与UDP的定义与差别

      TCP(Transmission ControlProtocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议

      UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务

     TCP和UDP是OSI模型中的运输层中的协议。TCP提供可靠的通信传输,而UDP则常被用于让广播和细节控制交给应用的通信传输。

TCP与UDP基本区别:
1、基于连接与无连接。
2、TCP要求系统资源较多,UDP较少。
3、UDP程序结构较简单。
4、流模式(TCP)与数据报模式(UDP)。
5、TCP保证数据正确性,UDP可能丢包。
6、TCP保证数据顺序,UDP不保证。
7、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接。
8、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付。
9、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)。
10、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信。
11、TCP首部开销20字节;UDP的首部开销小,只有8个字节。
12、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道。
 

TCP拥塞控制问题

                                                   ∑对资源的需求>可用资源

         由于发送方到接收方之间的信道是公用的,因此如果发送方不考虑中间信道的容量随意发送就可能出现拥塞。拥塞会导致延迟严重,甚至大量丢包

CP必须使用端到端拥塞控制。(区别于网络辅助手段)

方法:让每一个发送方根据所感知到的网络拥塞程度来限制其能向链接发送流量的速率。

不拥塞——加快发送流量的速率

拥塞——减慢发送流量的速率

æ¥å¡æ§å¶çä½ç¨

慢开始与拥塞避免

慢开始
1.慢开始不是指cwnd的增长速度慢(指数增长),而是指TCP开始发送设置cwnd=1。 
2.思路:不要一开始就发送大量的数据,先探测一下网络的拥塞程度,也就是说由小到大逐渐增加拥塞窗口的大小。这里用报文段的个数的拥塞窗口大小举例说明慢开始算法,实时拥塞窗口大小是以字节为单位的


         3.为了防止cwnd增长过大引起网络拥塞,设置一个慢开始门限(ssthresh状态变量) 
当cnwd<ssthresh,使用慢开始算法 
当cnwd=ssthresh,既可使用慢开始算法,也可以使用拥塞避免算法 
当cnwd>ssthresh,使用拥塞避免算法

无论是在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(其根据就是没有收到确认,虽然没有收到确认可能是其他原因的分组丢失,但是因为无法判定,所以都当做拥塞来处理),就把慢开始门限设置为出现拥塞时的发送窗口大小的一半。然后把拥塞窗口设置为1,执行慢开始算法 

快重传与快恢复

å¢å å¿«éä¼ ä¸å¿«æ¢å¤

快重传

1.快重传要求接收方在收到一个失序的报文段后就立即发出重复确认(为的是使发送方及早知道有报文段没有到达对方)而不要等到自己发送数据时捎带确认。快重传算法规定,发送方只要一连收到三个重复确认就应当立即重传对方尚未收到的报文段,而不必继续等待设置的重传计时器时间到期。 

快恢复(与快重传配合使用)
1.采用快恢复算法时,慢开始只在TCP连接建立时和网络出现超时时才使用。 
2.当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把ssthresh门限减半。但是接下去并不执行慢开始算法。 
3.考虑到如果网络出现拥塞的话就不会收到好几个重复的确认,所以发送方现在认为网络可能没有出现拥塞。所以此时不执行慢开始算法,而是将cwnd设置为ssthresh的大小,然后执行拥塞避免算法。
 

å¿«é传示æå¾

 

TCP连接建立与关闭

            TCP建立连接    : 就是我们常说的通过三次握手建立TCP连接。

ä¸æ¬¡æ¡æ

第一步:客户端的TCP向服务器端的TCP发送一个特殊的TCP报文段,称为SYN报文段(syn设置为1),不包含应用层数据,随机选择一个初始序号client_isn。该报文段会被封装到一个IP数据报中,并发送给服务器。 
第二步:服务器收到ip数据报后,提取出TCP SYN报文段,为该TCP分配TCP缓存和变量,并向该客户TCP发送允许连接的报文段。这个报文段也不包含应用层数据。首部包含三个重要信息:SYN比特设置为1,确认号设置为client_isn+1;服务器选择自己的随机序号server_isn。该报文也被称为SYNACK segment 
第三步:客户机收到SYNACK报文段后,给该连接分配缓存和变量。客户机向服务器发送另外一个报文段,对服务器的允许连接的报文段进行确认(确认字段设置为server_isn+1)。因为连接已经建立了,因此SYN比特设置为0。这一阶段可以在报文段负载中携带客户到服务器的数据。

为什么要采用三次握手,两次不行吗?

         原则上任何数据传输都无法确保绝对可靠,三次握手只是确保可靠的基本需要。

          在只有两次“握手”的情形下,假设Client想跟Server建立连接,但是却因为中途连接请求的数据报丢失了,故Client端不得不重新发送一遍;这个时候Server端仅收到一个连接请求,因此可以正常的建立连接。但是,有时候Client端重新发送请求不是因为数据报丢失了,而是有可能数据传输过程因为网络并发量很大在某结点被阻塞了,这种情形下Server端将先后收到2次请求,并持续等待两个Client请求向他发送数据...问题就在这里,Cient端实际上只有一次请求,而Server端却有2个响应,极端的情况可能由于Client端多次重新发送请求数据而导致Server端最后建立了N多个响应在等待,因而造成极大的资源浪费!所以,“三次握手”很有必要!

TCP关闭连接 

过程:

  1. 现在 A 的应用进程先向其 TCP 发出连接释放报文段,并停止再发送数据,主动关闭 TCP 连接。A 把连接释放报文段首部的 FIN = 1,其序号seq = u,等待 B 的确认。
  2. B 发出确认,确认号 ack = u + 1,而这个报文段自己的序号 seq = v。TCP 服务器进程通知高层应用进程。从 A 到 B 这个方向的连接就释放了,TCP 连接,处于半关闭状态。B 若发送数据,A 仍要接收。
  3. 若 B 已经没有要向 A 发送的数据,其应用进程就通知 TCP 释放连接。
  4. A 收到连接释放报文段后,必须发出确认。
  5. 在确认报文段中 ACK = 1,确认号 ack = w + 1,自己的序号 seq = u + 1。

 

 

张三挥手(fin)——李四伤感地微笑(ack)——李四挥手(fin)——张三伤感地微笑(ack)

张三已经挥了手,可是人还没有走,只是不再说话,但是耳朵还是可以继续听,李四呢继续喊话。等待李四累了,也不再说话了,超张三挥了挥手,张三伤感地微笑了一下,才彻底结束了。

为什么要四次挥手?

  试想一下,假如现在你是客户端你想断开跟Server的所有连接该怎么做?第一步,你自己先停止向Server端发送数据,并等待Server的回复。但事情还没有完,虽然你自身不往Server发送数据了,但是因为你们之前已经建立好平等的连接了,所以此时他也有主动权向你发送数据;故Server端还得终止主动向你发送数据,并等待你的确认。其实,说白了就是保证双方的一个合约的完整执行!

请讲一下浏览器从接收到一个URL,到最后展示出页面,经历了哪些过程。

1.DNS解析 
2.TCP连接 
3.发送HTTP请求 
4.服务器处理请求并返回HTTP报文 
5.浏览器解析渲染页面

请说明一下http和https的区别

https协议要申请证书到ca,需要一定经济成本;
2) http是明文传输,https是加密的安全传输;
3) 连接的端口不一样,http是80,https是443;
4)http连接很简单,没有状态;https是ssl加密的传输,身份认证的网络协议,
   相对http传输比较安全。

你知道的http请求,并说明应答码502和504的区别

502:作为网关或者代理工作的服务器尝试执行请求时,
从上游服务器接收到无效的响应。

504:作为网关或者代理工作的服务器尝试执行请求时,
未能及时从上游服务器(URI标识出的服务器,例如HTTP、FTP、LDAP)
或者辅助服务器(例如DNS)收到响应。

请说明一下哪种应用场景会使用TCP协议,使用它的意义

当对网络通讯质量有要求的时候,
比如:整个数据要准确无误的传递给对方,
这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,
POP、SMTP等邮件传输的协议

请你解释一下TCP为什么可靠一些

三次握手,超时重传,滑动窗口,拥塞控制。

谈一下,为什么tcp为什么要建立连接

保证可靠传输

 

参考:https://www.cnblogs.com/gd-luojialin/p/7615250.html

https://blog.csdn.net/hgyan25/article/details/79400775

https://blog.csdn.net/u014590757/article/details/79549047

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值