运输层

  • 从通信和信息处理的角度来看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最底层。IP协议能够把源主机A发出的分组,按照IP首部,送给B主机。但是真正通信的实体是主机中的进程,是这台主机中的一个进程和另一台主机中的一个进程在交换数据。因此严格的讲,两台主机进行通信就是两台主机中的应用进程互相通信。从运输层来看,通信的真正端点并不是主机而是主机中的进程。也就是说,端到端的通信就是应用进程之间的通信。、
  • 应用进程之间的通信,运输层还有一个特点就是复用和分用。复用是指发送方不同的应用进程都可以使用同一个运输层协议传送数据,分用是指接收方在剥去报文首部后能够把这些数据正确交付目的应用程序。(IP层也是复用和分用)
  • 运输层还要对收到的报文进行差错检测,在网络层,IP数据报首部中的检测和字段,只检验首部是否出错,而不检查数据部分。
  • 运输层的两个主要协议都是互联网的正式标准:用户数据报协议UDP、传输控制协议TCP。
  • 在TCP/IP体系中,TCP传输的数据称为TCP报文段,UDP传输的数据称为UDP用户数据报。
    • UDP在传输过程中不需要建立连接,远地主机接收到UDP报文后,不需要给出任何确认。虽然UDP不提供可靠服务,但在某些情况下UDP却是一种最有效的工作方式。
    • TCP则提供面向连接的服务。在传输数据之间必须要建立连接,数据传送结束后要释放连接。TCP不提供多播或者广播服务。由于TCP要提供可靠的、面向连接的运输服务,因此不可避免的增加了许多的开销,如确认、流量控制、计时器以及连接管理等。这不仅使协议数据单元的首部增大很多,还占用许多的处理机资源。
  • 应用 应用层协议 运输层协议
    名字转换 DNS(域名系统) UDP
    文件传送 TFTP(简单文件传送协议) UDP
    路由选择协议 RIP(路由信息协议) UDP
    IP地址配置 DHCP(动态主机配置协议) UDP
    网络管理 SNMP(简单网络管理协议) UDP
    远程文件服务器 NFS(网络文件系统) UDP
    IP电话 专用协议 UDP
    流式多媒体 专用协议 UDP
    多播 IGMP(网际组管理协议) UDP
    电子邮件 SMTP(简单邮件传送协议) TCP
    远程终端接入 TELNET(远程终端协议) TCP
    万维网 HTTP(超文本传送协议) TCP
    文件传送 FTP(文件传送协议)

    TCP

  • 运输层的端口:虽然通信的终点是应用进程,但只要把所传送的报文交到目的主机的某个合适的端口,剩下的工作(即最后交付目的进程)就由TCP/IP来完成。

    • TCP/IP的运输层用一个16位端口号来标识一个端口。

    • 服务器端使用的端口,分为两类:熟知端口号(系统端口号)和登记端口号。

      • 熟知端口号(0-1023):把这些端口号指派给了TCP/IP最重要的一些应用程序,让所有用户都知道。

      • 登记端口号(1024-49151):这类端口号是为了没有熟知端口号的应用程序使用的。

    • 客户端使用的端口号(49152-65535):这类端口号仅在客户进程运行时才动态选择,因此也叫作短暂端口号。

用户数据报协议UDP

  • UDP是无连接的,即发送数据之前不需要建立连接(当然,发送数据结束时也没有连接可以释放),因此减少了开销和发送数据之前的时延。
  • UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。
  • UDP是面向报文的,发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。也就是说,应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文。在接收方的UDP,对IP层交上来的UDP用户数据报,在去除首部后就原封不动的交付上层的应用进程。
  • UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。
    • 但是当很多的源主机同时向网络发送高速率的实时视频流时,网络就有可能发生拥塞,结果大家都无法接收。因此,不使用拥塞控制的UDP可能会造成网络发生严重的拥塞问题。那么应用进程本身在不影响应用的实时性的前提下,增加一些提高可靠性的措施,如采用前向纠错或重传已丢失的报文。
  • UDP支持一对一、一对多、多对一和多对多的交互通信。
  • UDP的首部开销比较小,只有8个字节。
  • UDP的首部格式

    • 只有8个字节:

      • 源端口(2个字节):源端口号,在需要对方回信时选用。不需要时可选为0。
      • 目的端口(2个字节):目的端口,这在终点交付报文时必须使用。
      • 长度(2个字节):UDP用户数据报的长度,其最小值是8(仅仅有首部)。
      • 检验和(2个字节):检验UDP用户数据报在传输中是否有错。有错的话就丢弃。
    • 为了计算检验和,要再UDP用户数据报之前增加12字节的伪首部。这个伪首部既不向下传送也不向递交,而仅仅是为了计算检验和。
      • 伪首部:源IP地址(4个字节)、目的IP地址(4个字节)、一字节的全0、IP首部中协议字段的值(1字节,对于UDP就是17)、UDP用户数据报长度(2个字节)
      • UDP的检验和是把首部和数据部分一起都检验。
      • 在发送方,首先是把全零放入检验和字段。在把伪首部以及UDP用户数据报看成是由许多16位的字串接起来的。若UDP用户数据报的数据部分不是偶数个字节,则要填入一个全0字节,但是此字节不发送。然后按二进制反码计算这些16位字的和。将此和的二进制反码写入到检验和字段后,就发送这样的UDP用户数据报。
      • 在接收方,把收到的UDP用户数据报连同伪首部(以及可能填充全零字节)一起,按二进制反码求这些16位字的和。当无差错时其结果为全1。否则就表明有差错,接收方就丢弃这个UDP用户数据报。

运输层(UDP)详解(一)相关推荐

  1. java网络编程udp_java网络编程(UDP详解)

    UDP详解 一,TCP/IP协议栈中,TCP协议和UDP协议的联系和区别? 联系: TCP和UDP是TCP/IP协议栈中传输层的两个协议,它们使用网络层功能把数据包发送到目的地,从而为应用层提供网络服 ...

  2. TCP和UDP详解(非常详细)

    TCP和UDP详解 计算机网络知识扫盲:https://blog.csdn.net/hansionz/article/details/85224786 网络编程套接字:https://blog.csd ...

  3. 传输层两大协议:TCP与UDP详解(两者的联系与区别)

    一.TCP协议 1.TCP协议报文格式 TCP协议报文格式详解 2.TCP"三次握手"建立连接 位码即tcp标志位,有6种标示: SYN(synchronous建立联机) ACK( ...

  4. Socket套接字通信 TCP UDP详解(网络通信)

    文章目录 一 什么是套接字Socket 1.Socket简介 2.Socket的域(domain) 3.Socket主要类型(type) 4.Socket基本工作流程 二 创建套接字Socket 1. ...

  5. stm32 udp连续发送大量数据_TCP和UDP详解

    本篇文章主要是从运输层协议概述.UDP.TCP.可靠传输的工作原理.TCP首部格式.TCP可靠传输的实现.TCP流量控制.TCP的拥塞控制.TCP的连接管理这几个方面进行解析. 一.运输层协议概述 1 ...

  6. 网络传输层之TCP、UDP详解

    1.传输层存在的必要性 由于网络层的分组传输是不可靠的,无法了解数据到达终点的时间,无法了解数据未达终点的状态.因此有必要增强网络层提供服务的服务质量. 2.引入传输层的原因 面向连接的传输服务与面向 ...

  7. 什么是TCP/IP UDP 详解

    文章目录 TCP/IP TCP/IP协议介绍 TCP协议 TCP应用场景 TCP 三次握手 为什么要三次握手 TCP四次挥手 为什么断开要断四次 常用的TCP端口号及其功能 IP协议 UDP协议 UD ...

  8. 计算机网络【UDP和TCP首部字段详解】

    文章目录 一 UDP详解 二 TCP首部各个字段详解 一 UDP详解 在传输层中,有两个协议UDP和TCP,通常UDP都是比较简单的协议字段,因为UDP不需要面向连接,也就是说,发送UDP数据包过去时 ...

  9. 网络原理往期考试题+部分详解+最终版

    一.填空题: (+号代表出现次数,无则说明一次) ++1. 在采用电信号表达数据的系统中,数据有数字数据和__模拟数据__两种. 2. 国际标准化组织ISO提出的不基于特定机型.操作系统或公司的网络体 ...

  10. Android 网络编程之HTTPS详解

    前言:HTTPS涉及相关的知识,总是很难的将其归纳总结起来,本文旨在带你学习详细的HTTPS相关知识点,看完本文后,你会了解到以下相关知识点: HTTPS的工作原理 HTTPS为什么要这样设计 密码学 ...

最新文章

  1. [ME]不知道第几次学c语言,仍觉得水深莫测
  2. Oracle Cloud Native Framework推出云原生解决方案
  3. B~树(B-Tree)与B+树
  4. 小程序:版本更新后获取用户信息变更
  5. 给定一个数组和一个数M,在数组中求一些数使它们的和最接近M------递归
  6. Android Studio3.5 JNIDemo实现步骤详解
  7. 20种水彩画笔效果PS笔刷
  8. 如果让你去学习一门新的语言 你是通过什么学习 怎么快速高效学习
  9. ETC是什么,ETC系统主要有哪几部分构成?
  10. 技校计算机可以学平面设计吗,上技校可以学平面设计吗 去技校学平面设计还是自己在家自学好 - 兔课网...
  11. 华为2288XV5服务器配置RAID,安装ESXI虚拟机
  12. sql注入——布尔注入
  13. python 爬虫 JA3 指纹 TCL SSL 安全证书问题
  14. 计算机网络专业现状,计算机网络的发展现状及网络体系结构涵义分析论文
  15. Android Studio更换眼睛保护背景色
  16. C++ primer 5版第六章
  17. html地图百度提交,使用百度网站地图插件(sitemap)向百度提交链接
  18. C++编程思想之迭代器
  19. js禁止 鼠标滚轮事件
  20. Sentinel-2数据下载及预处理

热门文章

  1. pythonsqlite导出json_使用python将mysql数据库的数据转换为json数据
  2. 层次聚类算法_机器学习理论(十四)聚类
  3. 怎么用计算机算全勤奖,全勤奖计算与发放细则
  4. 冒泡排序及其稳定性介绍
  5. Java编程:分治算法
  6. 数值分析(3)-多项式插值: 牛顿插值法
  7. Java 关于类型类、this.getClass()的理解
  8. 基于TensorRT量化部署RepVGG模型
  9. 3D点云目标检测算法汇总
  10. 深度学习中网络在训练时不收敛的原因