计算机网络笔记5 传输层

计算机网络系列笔记目录

  • 计算机网络笔记6 应用层
  • 计算机网络笔记5 运输层
  • 计算机网络笔记4 网络层
  • 计算机网络笔记3 数据链路层
  • 计算机网络笔记2 物理层
  • 计算机网络笔记1 概述

计算机网络笔记5 传输层

  • 文章前言
  • 一、运输层概述
  • 二、运输层的端口与复用、分用的概念
  • 三、UDP协议 和 TCP协议 对比
    • 用户数据报协议 UDP(User Datagram Protocol)
    • 传输控制协议 TCP(Transmission Control Protocol)
  • 四、TCP协议
    • 1、TCP的三次握手和四次挥手
    • 2、TCP的流量控制(flow control)
    • 3、TCP的拥塞控制
    • 4、TCP的超时重传
    • 5、TCP的可靠传输
  • 本章思维导图

文章前言

站在巨人的肩膀上,让知识的获得更加容易!本文为立足B站最火的湖科大教书匠计网课程和王道课程的笔记,以及前人计网博客笔记,综合自己理解,梳理的一系列完整的笔记!如果您觉得文章对您有帮助记得⭐️,有不足之处欢迎指出,评论和私信会在第一时间回复。或者直接私信我。

  • 学习视频来源: 计算机网络微课堂(有字幕无背景音乐版)yyds
  • 课件pdf来源:评论区up bili_68567544整理目录分享
  • 参考文章:https://blog.csdn.net/weixin_45067603/article/details/107053479及百度百科、知乎等

课程相关资源(课件、PDF文档、仿真软件)稍后有时间整理后会分享链接到评论区自行下载

一、运输层概述

运输层为运行在不同主机上的应用进程提供直接的通信服务,向上层屏蔽下面的网络核心细节如(网络拓扑、路由器选择协议等),使应用进程仿佛是存在一条端到端的逻辑通信信道。

计算机网络体系中物理层、数据链路层、网络层共同实现了主机到主机之间的通信,但是真正在网络中进行通信的实体是位于通信主机中的进程,运输层就是为运行在不同主机上的应用进程提供直接的通信服务,所以,运输层协议又称为端到端协议
计算机网络笔记5 传输层_第1张图片
根据应用需求的不同,运输层为应用层提供了两种不同的运输协议,即面向连接的TCP无连接的UDP,这是本章的主要内容

二、运输层的端口与复用、分用的概念

为了区分运行在计算机上的进程,使用进程标识符PID(Process ID)标志运行在计算机上的进程(不同操作系统使用不同格式的进程标识符)
为了让不同操作系统的应用进程之间能够网络通信,TCP/IP体系的运输层用统一的方法–端口号(Port ID)区分应用层不同的应用进程
端口号长度16bit,所以取值范围为0-65535,端口号划分如下:

  • 熟知端口号(或系统端口号或公认端口号):数值0~1023。FTP的20/21,HTTP的80,DNS的53等
  • 登记端口号(或注册端口号):数值1024-49151。为没有系统端口号的应用程序提供的。必须在IANA按照规定进行登记,以免重复。
  • 客户端使用的端口号:
    也叫做动态端口号,或者短暂端口号。数值为49152~65535,由于这类端口号仅在客户进程运行时才动态选择,程序结束则已使用过的端口号就被回收,以便以后供其它客户进程使用。

Windows下查看PID与端口号:使用快捷键Ctrl+Shift+Esc呼出任务管理器后点击服务可查看 或者 使用快捷键win+r后再输入cmd回车,使用tasklist命令查看
Linux下使用命令 netstat -tunlp查看或者ps

注意: 端口号只是用来标记本计算机中应用层的各进程,在互联网中,不同计算机的相同端口是没有联系的,常用端口号如下了解即可
计算机网络笔记5 传输层_第2张图片
寻址中的复用与分用

  • 复用:应用层所有的应用进程都可以通过传输层再传输到网络层,通俗的说就是多个用户使用一个IO资源 发送消息 时,我们称之为“复用”。

  • 分用:传输层从网络层收到数据后交付给指明的应用进程,通俗的说就是多个用户使用一个IO资源 接收消息 时,我们称之为 “分用” 。
    计算机网络笔记5 传输层_第3张图片

在网络层

局域网内多个主机利用一个路由网关发送消息给互联网的其他主机。这也是复用技术。

同理,利用网关接收路由数据报就叫 分用技术。

在运输层

操作系统的 多个进程(这里一个端口表示一个进程) 利用一个运输层协议(或者称为运输层接口)发送数据称为复用

同理,接收时叫做 分用

在应用层

操作系统的 多个线程 利用一个端口(或者叫socket,socket = IP+端口号 )发送消息称为“”复用“”(有一个技术名词“”IO多路复用“”讲着的大概就是这个意思)

同理,接收时叫分用

在网络中使用套接字Scoket唯一的标识网络中的一个主机和它上面的一个进程;(Socket = IP + PID)

三、UDP协议 和 TCP协议 对比

用户数据报协议 UDP(User Datagram Protocol)

  • UDP 在传送数据之前不需要先建立连接,远程主机在收到 UDP 报文后,不需要给出任何确认。
  • UDP将可靠传输的实现放到了应用层,然后类似于TCP,实现确认机制,重传机制
  • UDP不属于连接型协议,因而具有消耗资源小,处理速度快等优点,所以通常音频、视频通话在传送时使用UDP比较多,因为它们即使丢失一两个数据包也不会对结果产生太大影响
  • UDP传输层无法保证数据的可靠传输,只能通过应用层来实现了;实现的方式可以参考TCP可靠传输的方式,只是实现不在传输层,转移到了应用层,目前有如下开源程序利用UDP实现了可靠的数据传输;分别有RUDP, RTP, UDT

传输控制协议 TCP(Transmission Control Protocol)

  • TCP 提供面向连接的服务。在传送数据之前必须先建立连接,数据传送结束后要释放连接。
  • TCP 不提供广播或多播服务。由于 TCP 要提供可靠的,面向连接的传输服务(TCP的可靠体现在TCP在传递数据之前,有三次握手来建立连接,而且在数据传递时,有流量控制、拥塞控制等机制,在数据传完后,四次挥手断开连接用来节约系统资源),这不仅使协议数据单元的首部增大很多,还要占用许多处理机资源。
  • TCP 一般用于文件传输、发送和接收邮件、远程登录等场景

计算机网络笔记5 传输层_第4张图片

四、TCP协议

1、TCP的三次握手和四次挥手

这点最长最复杂最重要单独开一篇文章TCP的三次握手和四次挥手
也可看小牛肉的文章TCP的三次握手和挥手

2、TCP的流量控制(flow control)

如果发送方数据发送太快,接收方来不及接收,就会造成数据丢失,所以使用滑动窗口机制来实现流量控制,让发送方的发送速率不要太快,接收方来得及接收。
一个案例搞懂流量控制:
假设A和B已建立TCP连接后,设一个报文段100B,报文段序列号初始值为1,接收窗口rwnd=400,B对A流量控制,A向B发送数据窗口变化过程如下:
ps:使用了一次累计确认机制ack和三次流量控制机制rwnd(发送窗口取接收窗口rwnd和拥塞窗口cwnd的最小值)
计算机网络笔记5 传输层_第5张图片
如果最后B不允许A再发送数据了后,B在处理完数据之后想要恢复窗口大小时,发送的有rwnd大小的数据报丢了怎么办?此时A有B的指令在前,发送窗口为0无法发送数据,B也在等待A回复,造成了类似死锁的现象
计算机网络笔记5 传输层_第6张图片
解决方法:使用计时器
TCP为每一个连接设有一个持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器。
若持续计时器设置的时间到期,就发送一个零窗口探测报文段。接收方收到探测报文段时给出现在的窗口值。
若窗口仍然是0,那么发送方就重新设置持续计时器。
计算机网络笔记5 传输层_第7张图片

3、TCP的拥塞控制

在某段时间,若对网络中某一资源的需求超过了该资源所能提供的可用部分,网络性能就要变坏这种情况就叫做拥塞(congestion)。

  • 在计算机网络中的链路容量(即带宽)、交换结点中的缓存和处理机等,都是网络的资源。若出现拥塞而不进行控制,整个网络的吞吐量将随输入负荷的增大而下降。
    计算机网络笔记5 传输层_第8张图片
    拥塞控制通过如下图所示4种算法实现,通常两两结合使用
    计算机网络笔记5 传输层_第9张图片
    计算机网络笔记5 传输层_第10张图片
    计算机网络笔记5 传输层_第11张图片
    计算机网络笔记5 传输层_第12张图片
    计算机网络笔记5 传输层_第13张图片
    例题:
    计算机网络笔记5 传输层_第14张图片

4、TCP的超时重传

超时重传时间RTO设计短了容易有不必要的重传让网络负荷增大,长了容易造成数据丢失,而TCP协议采用自适应算法,动态的改变重传时间RTTs(加权平均往返时间),具体计算方法如下:
计算机网络笔记5 传输层_第15张图片
Tips:这里的算法推导有个非常精彩的过程,建议自行观看视频体会,这里只放最终算式便于总结和复习!

5、TCP的可靠传输

TCP基于字节为单位的滑动窗口来实现可靠传输
计算机网络笔记5 传输层_第16张图片
可靠传输这部分其实包含了很多的内容,也有和前面重合的,这部分看了不少文章还是博客园大佬靠谱儿TCP协议如何保证可靠传输?

本章思维导图

思维导图来源:https://blog.csdn.net/weixin_45067603/article/details/107053479,虽然B站王道的计网相比王道的其他课程略微拉跨,但是这个博主总结的很不错,所以一并用了,差不多的,之后自己会自己总结啦,学的时候感觉好多好难,谢希仁的书听老师讲了一遍还是感觉好难的样子,自己理一遍才行!

你可能感兴趣的:(计算机网络,网络,服务器)