计算机网络学习笔记--传输层知识总结

本文涉及的产品
数据传输服务 DTS,数据同步 small 3个月
推荐场景:
数据库上云
数据传输服务 DTS,数据迁移 small 3个月
推荐场景:
MySQL数据库上云
数据传输服务 DTS,数据同步 1个月
简介: 传输层概述:  为什么要划分传输层?   既然网络层已经能把源主机上发出的数据传送给目的主机,那么为什么还需要加上一个传输层呢?这就需要我们理解主机用户应用层通信的主体,位于两台网络主机中真正的数据通信主体并不是这两台主机,而是两台主机中的各种网络应用进程.

传输层概述:

 为什么要划分传输层?

  既然网络层已经能把源主机上发出的数据传送给目的主机,那么为什么还需要加上一个传输层呢?这就需要我们理解主机用户应用层通信的主体,位于两台网络主机中真正的数据通信主体并不是这两台主机,而是两台主机中的各种网络应用进程.同一时间一台主机上可能有多个进程同时运行,这时候就需要为应用程序提供一个标识,那就是端口.而传输层就是为了提供这种端到端的服务而存在的.下面以一张图来解释.

同时从图中也可以看出来,IP协议提供了主机之间的逻辑通信.而传输层协议提供的是进程之间的逻辑通信.

什么是端到端? 和点对点有啥区别?

  "点对点"连接是通信双方直接通过电缆进行的连接,中间没有经过其他任何设备.

  "端到端"连接是两个终端主机之间的连接,这两个终端系统的连接中要经过很多个设备(路由器).

传输层两个重要的术语:TSAP和TPDU

  TSAP(传输层服务访问点)是上层(应用层)调用下层(传输层)的一个逻辑接口,其实就是我们所说的端口,端口用来标识应用层的进程.

   端口:

      端口用16位二进制来表示,所以共有65535个端口号.

      一般将0~1023号端口分配给一些市面上公用的一些网络协议或应用,这一类端口号的分配被广大使用者所接受,事实上成为了一种标准,称为保留端口.

      剩下的是一般端口,可以自己使用.

  TPDU(传输层协议数据单元)指的是传输层与对等层之间传输的报文,也就是"数据段",其实每一层都有每一层的SAP和PDU.

   

传输层提供的服务:

    1. 逻辑连接的建立
    2. 传输层寻址
    3. 数据传输
    4. 传输连接释放
    5. 流量控制
    6. 拥塞控制
    7. 多路复用和解复用
    8. 崩溃恢复

TCP(传输控制)协议     

  TCP协议的特点:

    面向连接的传输协议:数据传输之前必须先建立连接,数据传输完成之后,必须释放连接.

    仅支持单播传输:每条传输连接只能有两个端点,只能进行点对点的连接,不支持多播和广播的传输方式,UDP是支持的.

    提供可靠的交付服务:传送的数据无差错,不丢失,不重复,且顺序与与源数据一致

    传输单位是数据段:每次发送的数据段不固定,受应用层传送报文大小和网络中的MTU(最大传输单元)值大小的影响.最小数据段可能仅有21个字节(其中20个字节属于TCP头部,数据部分仅1字节).

    支持全双工传输:通信双方可以同时发数据和接收数据.

    TCP连接是基于字节流的:UDP是基于报文流的.

  TCP数据报格式:

    

    各字段的具体说明,可以详见这篇博文,内容很多,不想写了.http://www.360doc.com/content/12/1218/10/3405077_254718387.shtml

 TCP套接字(Socket):

     Socket是TCP/IP协议中的叫法,它类似于之前说的TSAP地址,即传输层协议接口,为了区别不同的应用程序进程和连接,一般计算机操作系统都为应用程序与TCP/IP交互提供了套接字(socket)接口.

     注意:Socket与TSAP最大的不同之处就是,TSAP是位于传输层的,而Socket是位于应用层的,但它调用了传输层的端口.

      在应用层上,针对每一个应用进程都有一个Socket,用来调用传输层的一个特定端口,Socket与端口和IP地址是多对一的关系.

  TCP传输连接的建立(3次握手):

    

  TCP传输连接的释放(4次握手):

    

TCP是如何保证数据可靠性的:

   TCP是一个可以保证可靠数据传输的传输层协议,主要采用采用以下四个机制实现数据可靠性传输:

    1.  字节编号机制:TCP数据段以字节为单位对数据段的"数据"部分进行一一编号,确保每一个字节的数据都可以有序传送和接收.
    2.    数据段确认机制:每接收一个数据段都必须有接收端向发送端返回确认数据段,其中的确认号表示已经正确接收的数据段序号.
    3.    超时重传机制:TCP中有一个重传定时器(RTT),发送一个数据段的同时也开启这个定时器,如果定时器过期之时还没有返回确认,则定时器停止,重传该数据.
    4.  选择性确认机制:(Selective ACK,SACK)/只重传缺少部分的数据,不会重传那些已经正确接收的数据.

TCP的流量控制:

    需要进行流量控制的原因就是,数据发送的太快,接收端来不及接收而出现的丢包状况.流量控制的目的也就是不要让发送端的发送的数据大于接收端的数据处理能力.

    TCP的流量控制通过滑动窗口机制来进行,窗口的大小的单位是字节.

    在TCP首部有一个窗口字段(见上图TCP首部),这个字段的数值就是给对方设置的发送窗口的上限,发送窗口在连接时由双方商定,但在通信过程中,接收端可以依据自己的资源状况,动态的调整对方发送窗口的值的大小,达到控制的目的.

   

    假设每个字段大小为100字节,当前发送窗口大小是400字节,发送端已经发送了400字节的数据,但是仅收到前200个字节的确认信息,还有200个字节没有发来确认,那么发送窗口当前时刻还能发送300字节,于是发送窗口前移,整个过程如图所示.是一个简单的滑动窗口的情况.

TCP的拥塞控制:

  什么是网络拥塞呢?我只发图,不说话.

      

两个方案:慢启动与拥塞避免

     

    "拥塞窗口":是为了避免发生拥塞而设置的窗口,最终发送的字节数是接收端为发送端设置的"发送窗口"和"拥塞窗口"的最小值.

    "慢启动阈值"(SSTHRESH):初始值是64k,即65535个字节,当发生一次数据丢失时,其值变为"拥塞窗口"大小的一半.

    慢启动:

      主机刚开始发送报文段时先将拥塞窗口的大小设置为一个MSS(该连接上当前使用的最大数据段大小).

      每收到一个报文段的确认后,将拥塞窗口增加最多一个MSS的大小.

      以此类推,用这样的方法逐步增大发送端拥塞窗口的大小,使分组注入到网络的速率更加合理.

      直到拥塞窗口的值达到慢启动阈值,这时候"拥塞避免"就发挥作用了.

    拥塞避免:

      该方案不再像慢启动一样以指数速度增长拥塞窗口的大小,而是到达慢启动阈值后,按线性规律增长,是网络比较不容易出现拥塞.


 

   以上两个方案配合使用,可有效减少网络拥塞的影响,但不能完全避免拥塞情况,后来又提出了"快速重传"和"快速恢复"机制,基本思想是:

      当接收端收到一个不是按3顺序到达的数据段时,迅速发送一个重复ACK数据段,再重复收到3个重复的ACK数据段后,即认为对应"确认号"上的字段已丢失,TCP不等重传定时器失效,就重传已丢失的数据,此为快速重传,同时快速恢复发挥作用,把当前拥塞窗口大小设置为当前慢启动阈值大小的一半,以减轻网络负荷,然后再执行"拥塞避免"....

UDP协议:

     在一些视频通过,网络电话中,丢失一部分数据,影响并不大,这时候使用UDP协议传输就是一个更好的选择.

  UDP协议的特点:

    1.     无连接性
    2.     不可靠性
    3.     以报文为边界
    4.     无流量控制和拥塞控制方案
    5.     支持但播,组播,广播等多种通信方式

其他的...就真没啥好说的了.......

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
Sqoop 企业级大数据迁移方案实战
Sqoop是一个用于在Hadoop和关系数据库服务器之间传输数据的工具。它用于从关系数据库(如MySQL,Oracle)导入数据到Hadoop HDFS,并从Hadoop文件系统导出到关系数据库。 本课程主要讲解了Sqoop的设计思想及原理、部署安装及配置、详细具体的使用方法技巧与实操案例、企业级任务管理等。结合日常工作实践,培养解决实际问题的能力。本课程由黑马程序员提供。
相关文章
|
2月前
|
Ubuntu 网络安全 图形学
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
在Ubuntu 20.04系统中解决网络图标消失和无法连接有线网络问题的方法,其中第三种方法通过检查并确保Windows防火墙中相关服务开启后成功恢复了网络连接。
794 0
Ubuntu学习笔记(二):ubuntu20.04解决右上角网络图标激活失败或者消失,无法连接有线问题。
|
2月前
|
域名解析 缓存 网络协议
TCP传输层详解(计算机网络复习)
本文详细解释了TCP/IP协议族的分层模型、各层的功能、TCP报文的格式以及TCP连接建立的三次握手和断开的四次挥手过程。
1020 2
TCP传输层详解(计算机网络复习)
|
6月前
|
存储 算法 网络虚拟化
【计算机网络】学习笔记,第三篇:数据链路层
现在的光纤宽带接入 FTTx 都要使用 PPPoE 的方式进行接入。在 PPPoE 弹出的窗口中键入在网络运营商购买的用户名和密码,就可以进行宽带上网了 利用 ADSL 进行宽带上网时,从用户个人电脑到家中的 ADSL 调制解调器之间,也是使用 RJ-45 和 5 类线(即以太网使用的网线)进行连接的,并且也是使用 PPPoE 弹出的窗口进行拨号连接的
90 5
|
2月前
|
域名解析 网络协议 前端开发
【第四期】网络层、传输层、应用层
【第四期】网络层、传输层、应用层
29 3
|
2月前
|
机器学习/深度学习 数据可视化 Linux
Seaborn可视化学习笔记(一):可视化神经网络权重分布情况
这篇文章是关于如何使用Seaborn库来可视化神经网络权重分布的教程,包括函数信息、测试代码和实际应用示例。
65 0
|
4月前
|
网络协议 网络安全
计算机网络-传输层
计算机网络-传输层
|
4月前
|
机器学习/深度学习 自然语言处理 并行计算
【深度学习+面经】Transformer 网络学习笔记
Transformer模型的核心概念、优缺点以及在多个领域的应用,并提供了针对Transformer架构的面试问题及答案。
200 2
|
6月前
|
机器学习/深度学习 网络协议 网络性能优化
[计算机网络]深度学习传输层TCP协议
[计算机网络]深度学习传输层TCP协议
60 1
|
5月前
|
缓存 网络协议 网络性能优化
计算机网络—传输层-tcp、udp协议详解
计算机网络—传输层-tcp、udp协议详解
|
7月前
|
监控 Java 数据库连接
【后台开发】TinyWebser学习笔记(1)网络编程基础知识
【后台开发】TinyWebser学习笔记(1)网络编程基础知识
61 3