计算机网络学习笔记(五):运输层(待更新)

5.1 概述

5.1.1 TCP协议的应用场景

TCP为应用层协议提供可靠传输,发送端按顺序发送,接收端按顺序接收,其间发送丢包、乱序,TCP负责重传和排序。下面是TCP的应用场景。

  • 多次交互 :客户端程序和服务端程序需要多次交互才能实现应用程序的功能
    • 接收电子邮件的POP3
    • 发送电子邮件的SMTP
    • 传输文件的FTP
  • 数据需要分段传输 :应用程序传输的文件需要分段传输
    • 浏览器访问网页:网页中图片和HTML文件需要分段后发送给浏览器
    • QQ传文件

5.1.2 UDP协议的应用场景

  • 数据无需分段传输 :客户端程序和服务端程序通信,应用程序发送的数据包不需要分段。
    • DNS 域名解析 :客户端向DNS服务器发送一个报文解析某个网站的域名 ,DNS服务器将解析的结果 使用一个报文返回给客户端。
  • 实时通信 :发送端和接收端需要实时交互,不允许较长延迟(通信时无需建立连接)
    • 语音/ 视频聊天:即便有几句话因为网络堵塞没听清,也不允许使用TCP等待丢失的报文,等待的时间太长了,就不能愉快的聊天了。
  • 多播或广播通信
    • 学校多媒体机房:老师的电脑屏幕需要教室的学生电脑接收屏幕,在老师的电脑安装多媒体教室服务端软件,在学生的电脑安装多媒体教室客户端软件。老师电脑使用多播地址或广播地址发送报文,学生电脑都能收到。
  • 注:同一个应用程序,可能会使用不同的协议。
    • QQ文字聊天、语音聊天、视频聊天:UDP协议
    • QQ传文件:TCP协议

5.2 三大关系

5.2.1 传输层协议和应用层协议之间的关系

通常,传输层协议加一个端口号 来标识一个应用层协议

  • 常见的应用层协议和传输层协议
    • HTTP默认使用TCP的80端口
    • HTTPS默认使用TCP的443端口(访问安全网站)
    • FTP默认使用TCP的21端口
    • SMTP默认使用TCP的25端口
    • POP3默认使用TCP的110端口
    • Telnet使用TCP的23端口
    • RDP默认使用TCP的3389端口(远程桌面协议)
    • Windows访问共享资源使用TCP的445端口
    • 微软SQL数据库默认使用TCP的1433端口
    • MySQL数据库默认使用TCP的3306端口
    • DNS使用UDP or TCP 的53端口

端口

  • 取值范围 :端口用一个16 端口号进行标志,允许有65536 不同的端口号。
  • 分类 :2大类、3小类
    • 服务器端使用的端口号
      • 熟知端口号:0 ~ 1023
      • 登记端口号:1024 ~ 49151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在IANA登记,以防止重复。
    • 客户端使用的端口号
      • 短暂端口号:49152 ~ 65535,留给客户进程选择暂时使用。
      • 当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。
  • 作用 :端口号只具有本地意义 ,只是为了标志本计算机应用层中的各进程 。在互联网中,不同计算机的相同端口号是没有联系的;同一计算机的不同进程使用不同的端口号(唯一)。
    • 服务器上端口的作用 :定位服务器上的服务
      • 服务器给网络中的计算机提供服务,服务器一旦运行某个服务,该服务就会使用TCP/UDP协议的相应端口来侦听客户端的请求、等待客户端的访问,每个服务使用的端口必须唯一。
      • 当不同客户端访问同一服务器上的不同应用时,数据报最终都会到达同一服务器。此时,需要使用服务器上的端口号来定位服务,以便将不同的请求转到相应的服务进行处理。
    • 客户端上端口的作用:确定数据包返回后给哪个客户端实例
  • 注(重要!!!):同一台计算机既可以作为服务端,也可以作为客户端(即服务端和客户端是相对的)。
  • 小结 :两个计算机中的进程要互相通信,不仅必须知道对方的端口号为了找到对方计算机中的应用进程 ) ,而且还要知道对方的 IP 地址为了找到对方的计算机)。

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

5.3.1 UDP的特点

UDP只在IP的数据报服务之上增加了很少一点的功能:

  • 功能1 (复用和分用) :使用端口标识不同的应用层协议
    • 注:如果不是为了复用和分用,应用程序完全可以将需要传输的报文交给网络层,而不需要经过传输层UDP。
  • 功能2 (差错检测)
  • 面向无连接 :发送数据之前不需要建立连接
    • 减少了开销 :主机不需要维持复杂的连接状态表(含有许多参数)
      • TCP:主机需要记录所有的TCP连接,可使用命令"netstat"查看(当大量用户同时访问web服务器时,web服务器需要记录所有的会话状态,消耗服务器的资源)
      • UDP:
    • 减少了时延
  • 面向报文 :对于应用层交下来的报文,UDP既不 合并,也不 拆分,而是保留这些报文的边界。UDP一次交付一个完整的报文。
  • 尽最大努力交付/ 不提供可靠交付
    • 注:UDP本身是不保证可靠的,当发送的数据出现差错时,由发送端重新发送。
  • 不局限于一对一 :UDP支持一对一、一对多、多对一和多对多的交互通信(即支持多播、广播
  • 无拥塞控制 :网络出现的拥塞不会使源主机的发送速率降低(减少了时延)
    • 实时应用:要求源主机以恒定的速率发送数据,并且允许 在网络发生拥塞时丢失一些数据 ,但却不允许数据有太大的时延
    • 多媒体通信
  • 首部开销小
    • UDP:8个字节
    • TCP :20个字节

5.3.2 UDP的首部

  • 源端口( 选用) :根据是否需要对方回信来确定是否使用
    • 需要对方回信:填入源端口号(系统随机产生)
    • 不需要对方回信:全0
  • 目的端口( 必用):在终点交付报文时,必须使用(用于确定将该报文交付给上层的哪个具体应用程序)
  • 长度 :UDP用户数据报的长度(首部+数据部分)
    • 最小值:8(仅有首部)
  • 检验和 :检测UDP用户数据报在传输中是否有错(有错就丢弃)
    • 注:为了计算校验和,此处引入"伪首部"共同参与计算
相关推荐
Lynnxiaowen44 分钟前
今天我们学习python编程常用模块与面向对象
运维·python·学习·云计算
递归不收敛1 小时前
Conda 常用命令汇总(新手入门笔记)
笔记·conda
前端橙一陈2 小时前
Salesforce Developer Edition(开发者版) 搭建测试环境
经验分享·笔记·其他
电子小子洋酱2 小时前
BearPi小熊派 鸿蒙入门开发笔记(4)
笔记·华为·harmonyos
Han.miracle2 小时前
数据结构——排序的学习(一)
java·数据结构·学习·算法·排序算法
摇滚侠2 小时前
Spring Boot 3零基础教程,WEB 开发 通过配置类代码方式修改静态资源配置 笔记32
java·spring boot·笔记
电子云与长程纠缠3 小时前
Blender入门学习01
学习·blender
qiuiuiu4133 小时前
正点原子RK3568学习日志12-注册字符设备
linux·开发语言·单片机·学习·ubuntu
蒙奇D索大4 小时前
【计算机网络】408考研计算机网络精讲:物理层核心——信道的极限容量(奈氏准则与香农定理)
计算机网络·考研
聪明的笨猪猪4 小时前
Java JVM “内存(1)”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试