首页 > 其他分享 >计算机网络__ 运输层

计算机网络__ 运输层

时间:2022-10-19 15:35:22浏览次数:62  
标签:__ 运输 UDP socket 报文 TCP 计算机网络 连接 端口号

概述

运输层在五层协议的体系结构的位置

image

  • 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。

  • 当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。

网络层的作用:
运输层为应用进程之间的通信提供服务。

网络层为主机之间的通信提供服务。
物理层负责处理两个节点 之间的通信

与网络层区别:
网络层是为主机之间提供逻辑通信;运输层为应用进程之间提供端到端的逻辑通信。

image

两种不同的运输协议

  1. TCP协议
  2. UDP协议
    .
    但这条逻辑通信信道对上层的表现却因运输层使用的不同协议而有很大的差别。
    TCP 协议
    面向连接。如果使用TCP协议,逻辑通信信道就相当于一条全双工的可靠信道

尽管下面的网络是不可靠的(只提供尽最大努力服务)

UDP 协议
无连接,不保证可靠性。此时逻辑通信信道是一条不可靠信道。

image

两个主要协议

TCP/IP 的运输层有两个主要协议:

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

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

运输协议数据单元 TPDU
两个 对等运输实体 在通信时传送的数据单位叫作运输协议数据单元 TPDU (Transport Protocol Data Unit)。

  • TCP 传送的数据单位协议是 TCP 报文段(segment)。
  • UDP 传送的数据单位协议是 UDP 报文或用户数据报。

数据包的形式就是不保证可靠性,面向无连接

使用 UDP 和 TCP 的典型应用和应用层协议
image
通信时间短,重发对数据影响小采用UDP,否则用TCP。

端口

运行在计算机中的进程是用进程标识符来标志的。
但运行在应用层的各种应用进程却不应当让计算机操作系统指派它的进程标识符。这是因为在互联网上使用的计算机的操作系统种类很多,而不同的操作系统又使用不同格式的进程标识符。

为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法对 TCP/IP 体系的应用进程进行标志。

端口号 (protocol port number)
解决这个问题的方法就是在运输层使用协议端口号 (protocol port number),或通常简称为端口 (port)。

端口号是应用层和运输层的通信的标识。

虽然通信的终点是应用进程,但我们可以把端口想象是通信的终点,因为我们只要把要传送的报文交到目的主机的某一个合适的目的端口,剩下的工作(即最后交付目的进程)就由 TCP 来完成。

注意:
端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在互联网中,不同计算机的相同端口号是没有联系的。

表示
端口用一个 16 位端口号进行标志,允许有65,535个不同的端口号。

两大类,三种端口

服务器端使用的端口号

  • 熟知端口,数值一般为 0 ~ 1023。
  • 登记端口号,数值为 1024 ~ 49151,为没有熟知端口号的应用程序使用的。
    使用这个范围的端口- 号必须在 IANA 登记,以防止重复。

客户端使用的端口号
又称为短暂端口号,数值为 49152 ~ 65535,留给客户进程选择暂时使用。
当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。

注意:

  • 实际上操作系统会占用登记端口号

常用的熟知端口
image

UDP

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

  • 复用和分用的功能
  • 差错检测的功能

UDP 的主要特点

UDP 是无连接的
发送数据之前不需要建立连接,,因此减少了开销和发送数据之前的时延。

UDP 使用尽最大努力交付,即不保证可靠交付
因此主机不需要维持复杂的连接状态表。

UDP 是面向报文的。
UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。UDP 一次交付一个完整的报文。

UDP 没有拥塞控制
因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。很适合多媒体通信的要求。

因此网络流量小,正常工作时UDP速度快。但是当网络拥堵时,UDP效率低。

UDP 支持一对一、一对多、多对一和多对多的交互通信。

UDP 的首部开销小
只有 8 个字节,比 TCP 的 20 个字节的首部要短。

UDP 是面向报文的
image

UDP 的首部格式

用户数据报 UDP 有两个字段:数据字段和首部字段。
首部字段有 8 个字节,由 4 个字段组成,每个字段都是 2 个字节。
image

“伪首部”
在计算检验和时,临时把 12 字节的“伪首部”和 UDP 用户数据报连接在一起。伪首部仅仅是为了计算检验和,不进行传输。
image

UDP 的检验和
把首部和数据部分一起都检验。

按二进制反码运算求和
将得出的结果求反码

应用场景

  1. 通信时间短
  2. 要求速度快,但是对可靠性要求不高。

TCP协议

TCP 最主要的特点
TCP 是面向连接的运输层协议,在无连接的、不可靠的 IP 网络服务基础之上提供可靠交付的服务。为此,在 IP 的数据报服务基础之上,增加了保证可靠性的一系列措施。

TCP 是面向连接的运输层协议。
每一条 TCP 连接只能有两个端点 (endpoint),每一条 TCP 连接只能是点对点的(一对一)。
TCP 提供可靠交付的服务。
TCP 提供全双工通信。
面向字节流
TCP 中的“流”(stream) 指的是流入或流出进程的字节序列。
“面向字节流”的含义是:虽然应用程序和 TCP 的交互是一次一个数据块,但 TCP 把应用程序交下来的数据看成仅仅是一连串无结构的字节流。

TCP 面向流的概念
TCP 不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系。
但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。
image

TCP 不关心应用进程一次把多长的报文发送到 TCP 缓存。
TCP 对连续的字节流进行分段,形成 TCP 报文段。
image

注 意
TCP 连接是一条虚连接而不是一条真正的物理连接。
TCP 对应用进程一次把多长的报文发送到 TCP 的缓存中是不关心的。
TCP 根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP 发送的报文长度是应用进程给出的)。
TCP 可把太长的数据块划分短一些再传送。
TCP 也可等待积累有足够多的字节后再构成报文段发送出去。

5.3.2 TCP 的连接
TCP 把连接作为最基本的抽象。
每一条 TCP 连接有两个端点。
TCP 连接的端点不是主机,不是主机的IP 地址,不是应用进程,也不是运输层的协议端口。TCP 连接的端点叫做套接字 (socket) 或插口。
端口号拼接到 (contatenated with) IP 地址即构成了套接字。
每一条 TCP 连接有两个端点。
TCP 连接的端点叫做套接字 (socket) 或插口。
image

套接字 (socket)
套接字 socket = (IP地址 : 端口号) (5-1)
套接字 socket = (192.169.1.20 : 2028)
每一条 TCP 连接唯一地被通信两端的两个端点(即两个套接字)所确定。即:
TCP 连接 ::= {socket1, socket2}
= {(IP1: port1),(IP2: port2)} (5-2)

TCP 连接,IP 地址,套接字
TCP 连接就是由协议软件所提供的一种抽象。
TCP 连接的端点是个很抽象的套接字,即(IP 地址:端口号)。
同一个 IP 地址可以有多个不同的 TCP 连接。
同一个端口号也可以出现在多个不同的 TCP 连接中。

Socket 有多种不同的意思
应用编程接口 API 称为 socket API, 简称为 socket。
socket API 中使用的一个函数名也叫作 socket。
调用 socket 函数的端点称为 socket。
调用 socket 函数时其返回值称为 socket 描述符,可简称为 socket。
在操作系统内核中连网协议的 Berkeley 实现,称为 socket 实现。

标签:__,运输,UDP,socket,报文,TCP,计算机网络,连接,端口号
From: https://www.cnblogs.com/kingwz/p/16806329.html

相关文章

  • 算法高级(45)-阿尔法狗到底有多厉害?
    1997年5月11日,一台名为“深蓝”的超级电脑将棋盘上的一个兵走到C4位置时,人类有史以来最伟大的国际象棋名家卡斯帕罗夫不得不沮丧地承认自己输了。世纪末的一场人机大战终于......
  • Redux and React
        ......
  • 每天学习一个Android中的常用框架——0.目录
    文章目录​​1.前言​​​​2.环境​​​​3.目录​​​​3.1持久化​​​​3.1.1Litepal​​​​3.1.2GreenDao​​​​3.1.3Realm​​​​3.1.4DBFlow​​​​3.2网......
  • 常见的内置模块
    包的具体使用  导入包里面的模块可以使用from...import...如果使用import...导入包时,则包名下必须包含__init__.py文件该文件内有什么名字就可以......
  • 实验6:开源控制器实践——RYU
    一、实验目的能够独立部署RYU控制器;能够理解RYU控制器实现软件定义的集线器原理;能够理解RYU控制器实现软件定义的交换机原理。二、实验环境Ubuntu20.04Desktopamd6......
  • 【Kubernetes】K8s笔记(九):DaemonSet 守护进程集
    目录0.Deployment有哪些不足1.使用YAML描述DaemonSet对象2.在Kubernetes里使用DaemonSet3.Taint和Toleration4.静态PodkubernetesDaemonSetdocs0.Dep......
  • 算法高级(44)-人脸识别:张学友的演唱会咋成了逃犯克星了呢?
    最近,网络上流传着一个说法——“风调雨顺萧敬腾,国泰民安张学友”,横批是:萧张至极”。据统计,在张学友演唱会上,已经是第7次有罪犯被抓到,包括被抓现行的和全国在逃人员。也因此,......
  • CountDownLatch
    //批量修改if(CollectionUtils.isNotEmpty(updateKsxxList)){intoneBatch=MagicNumber.ONE_HUNDRED;inttimes=updateKsxxLis......
  • 避免重复折腾
    好看的bash~/.bashrc里加PS1="\[\033[m\]|\[\033[1;35m\]\t\[\033[m\]|\[\e[1;31m\]\u\[\e[1;36m\]\[\033[m\]@\[\e[1;36m\]\h\[\033[m\]:\[\e[0m\]\[\e[1;32m\][\W]>\[......
  • 《ASCE1885的武术》---搬头
    击敌之前温文尔雅,击敌之时如雷似火,这也是江湖打斗的特色之一。甲乙对峙凶残打斗,甲先用轻声软语稳住乙。要知道,一连串的“对不起!对不起!”会使乙凶心顿敛,一连串“老师傅,老师傅......