计算机网络学习(三)— 传输层

计算机网络学习(三)— 传输层

一、传输层协议的应用场景

  • TCP保证可靠传输,需要分段,并对每个分段编号,具有流量控制功能,需要建立会话。
  • UDP传输不编号,一个数据包就能完成数据通信,不建立会话,多播。

1.1 场景分析

在使用微信聊天与传输文件时分别采用什么协议?

在聊天时不需要知道对方是否存在,是面向无连接的通信,因此使用UDP协议进行通信。而在传输文件时,一个数据包并不能传输完成,并且要求文件的正确性与可靠性,因此,传输文件采用的是TCP协议。

二、传输层与应用层的关系

应用层协议其实就是传输层协议TCP或UDP加上相应的端口号,例如以下常用的应用层协议与其对应的传输层协议加端口。

应用层协议 传输层协议 + 端口
http TCP + 80
HTTPS TCP + 443
FTP TCP + 21
SMTP TCP + 25
POP3 TCP + 110
RDP TCP + 3389
DNS UDP/TCP + 53

应用层协议与服务的关系就是:服务运行后在TCP或UDP的某个端口来侦听客户端的请求。

2.1 三类端口

  • 众所周知的端口:数值一般为0~1023
  • 登记端口号:1024~49151(魔数常量)
  • 客户端口号:49152~65535

在使用客户端访问服务端的指定端口时,服务端的端口号是指定的,而客户端的端口号是随机的,例如可以用客户端的任意端口去连接服务端的web服务80端口。

三、UDP协议

UDP在传输数据之前不需要先建立连接,对方的运输层在收到UDP报文后不需要给出任何确认,虽然UDP不提供可靠交付,但在某些情况下是一种最有效的工作方式。

3.1 UDP的特点

  • 面向无连接的,即发送数据前不需要建立连接
  • 不保证可靠交付,同时也不具有拥塞控制
  • 面向报文的,适合多媒体通信需求
  • 支持一对一、一对多、多对一、多对多的交互通信
  • 首部开销小,只需8个字节,有四个字段,每个字段两字节:
    • 源端口
    • 目的端口
    • 长度:UDP数据包长度
    • 检验和:检测UDP用户数据报在传输中是否有错。有错就丢弃。

UDP首部

四、TCP(传输控制协议)协议

TCP则提供面向连接的服务,TCP不提供广播或多播服务,由于TCP要提供可靠的、面向连接的运输服务,因此不可避免的增加了许多开销。

4.1 TCP特点

  • 面向连接的传输层协议
  • 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的(一对一)
  • 提供可靠交付的服务:通过TCP连接传送的数据,无差错、不丢失、不重复,并且按序到达。
  • 提供全双工通信
  • 面向字节流

TCP把连接作为最基本的抽象,每一条TCP连接有两个端点,TCP连接的端点叫做套接字(socket),一个socket其实就是一个IP+端口号(IP:端口号)。每一条TCP连接唯一地被通信两端的两个端点(即两个套接字或叫套接字组)所确定。

4.2 TCP如何实现可靠传输

TCP发送的报文段是交给IP层传送的,但IP层只能提供尽最大努力服务,也就是说,TCP下面的网络所提供的是不可靠的传输。TCP利用停止等待协议保证可靠传输。“停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。

4.2.1 停止等待与超时重传

没有出现差错的情况下,发送端A发送完一组数据就停止发送,等待接收端B发送一个确认信号,A在收到B的确认信号之后继续发送下一组数据,之后等待确认,一次循环此操作。

接收端B接收到了有差错的数据包,或者某一个数据包在传输过程中丢失了,这就是有差错的情况,在此情况下接收方B将此数据包丢弃,或什么也不做,不会发送任何信息。为了保证可靠传输,发送方A采用超时重传机制(A只要超过了一段时间仍然没有收到确认,就认为刚才发送的分组丢失了,因而重传前面发送过的分组)。

要实现超时重传,就要在每发送完一个分组时设置一个超时计时器。如果在超时计时器到期之前收到了对方的确认,就撤销已设置的超时计时器。

  • A在发送完一个分组后,必须暂时保留已发送的分组的副本,只有在收到相应的确认后才能清除暂时保留的分组副本。
  • 分组和确认分组都必须进行编号,这样才能明确是哪一个发送出去的分组收到了确认,而哪一个分组还没有收到确认。
  • 超时计时器设置的重传时间应当比数据在分组传输的平均往返时间(RTT)更长一些。

停止等待与超时重传

运输层的超时计时器的超时重传时间究竟应设置为多大呢?TCP采用了一种自适应算法,它记录一个报文段发出的时间,以及收到相应的确认的时间。这两个时间之差就是报文段的往返时间RTT 。TCP保留了RTT的一个加权平均往返时间 R T T S RTT_S RTTS

新 的 R T T s = ( 1 −

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
计算机网络基础学习框架可以帮助初学者系统地学习计算机网络的相关知识。以下是一份可能的学习框架: 1. 基础知识学习:掌握计算机基础、操作系统、编程语言等基础知识。可以通过自学或参加相关课程来获得。 2. 网络概述:了解计算机网络的基本概念、分类、结构和发展历程。可以通过阅读相关书籍、观看视频教程等方式来学习。 3. 网络协议:学习计算机网络的基本协议,包括TCP/IP协议、应用层协议、网络层协议、传输层协议等。可以通过阅读相关书籍、参加在线课程等方式来学习。 4. 网络拓扑:学习计算机网络的基本拓扑结构,包括总线型、环形、星型、树型、网状等。可以通过阅读相关书籍、观看视频教程等方式来学习。 5. 网络设备:了解计算机网络的基本设备,包括交换机、路由器、网关、防火墙等。可以通过阅读相关书籍、观看视频教程等方式来学习。 6. 网络安全:学习计算机网络的安全问题,包括网络攻击、防范措施、加密技术等。可以通过阅读相关书籍、参加安全课程等方式来学习。 7. 实践操作:通过实践操作,加深对计算机网络的理解和掌握。可以使用一些模拟软件、虚拟机或者云平台来进行实践。 8. 持续更新与深度研究:计算机网络是一个不断发展的领域,需要持续地更新和深度研究。可以通过参加相关会议、阅读相关论文或参加网络社区来获取最新的计算机网络知识。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值