zoukankan      html  css  js  c++  java
  • 运输层的功能

    运输层的功能

    0.1.简介

    • 运输层为应用进程之间提供端到端的逻辑通信(网络层是为主机之间提供逻辑通信)。
    • 运输层还要对收到的报文进行差错检测
    • 运输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP。

    0.2.两种不同的运输协议

    • 运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。
    • 当运输层采用面向连接的 TCP 协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道
    • 当运输层采用无连接的 UDP 协议时,这种逻辑通信信道是一条不可靠信道

    一、运输层的两个主要协议

    1.1.TCP/IP 的运输层有两个不同的协议:

    • 用户数据报协议 UDP (User Datagram Protocol);
    • 传输控制协议 TCP (Transmission Control Protocol);

    **TCP 与 UDP **

    • 两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元 TPDU (Transport Protocol Data Unit);
    • TCP 传送的数据单位协议是 TCP 报文段(segment),即分段传输;
    • UDP 传送的数据单位协议是 UDP 报文用户数据报,即整个数据包传输;
    • TCP/IP 体系中的运输层协议:

    image-20200128150730577

    • UDP 在传送数据之前不需要先建立连接。对方的运输层在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 是一种最有效的工作方式。
    • TCP 则提供面向连接的服务。TCP 不提供广播或多播服务。由于 TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。

    二、运输层的端口

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

    • 解决这个问题的方法就是在运输层使用协议端口号(protocol port number),或通常简称为端口(port)。
    • 虽然通信的终点是应用进程,但我们可以把端口想象是通信的终点,因为我们只要把要传送的报文交到目的主机的某一个合适的目的端口,剩下的工作(即最后交付目的进程)就由 TCP 来完成。
    • 硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址

    2.1.TCP 的端口

    • 端口用一个 16 位端口号进行标志。
    • 端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。

    2.2.三类端口

    • 熟知端口:数值一般为0~1023.

      FTP:21;

      TELNET:23;

      SMTP:25;

      DNS:53;

      HTTP:80;

      HTTPS:443;

      RDP:3389;

      ...

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

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

    2.3.示例

    在命令行窗口输入:

    netstat -n
    

    查看计算机建立的会话。

    image-20200128152638253

    可以看到没打开一个进程就会建立一个会话,比如打开两个网页就会建立两个会话,并且在本地地址中每个进程的端口号都是不重复的,其中外部地址中的“443”端口号表示HTTPS协议,“80”表示HTTP协议。

  • 相关阅读:
    [数据知识]DAMA数据管理—引论
    How to clear/delete all the partition table from a disk or partition in Linux
    Rust Safe Coding Notes
    量化交易平台
    斯坦福大学——人工智能本科4年课程清单
    去中心化数字身份DID简介——五、DID的应用
    linux c 打印时间最简单的实例
    sqlalchemy中Column的默认值属性
    Ubuntu安装jdk8的两种方式
    面试官:手撕十大排序算法,你会几种?(转)
  • 原文地址:https://www.cnblogs.com/AhuntSun-blog/p/12332054.html
Copyright © 2011-2022 走看看