zoukankan      html  css  js  c++  java
  • 计算机网络(三)--运输层

    一、作用

      两台主机进行通信,不仅仅需要IP地址,还有port,所以准确的说应该是主机上的应用程序进程进行通信。运输层实现了复用和分用的功能

    复用:应用层的所有应用程序都通过运输层再传送到网络层

    分用:运输层从网络层收到发送给各个应用程序的数据,然后分别交付指明的各应用程序

    二、网络层和运输层的区别

    1、网络层为主机之间提供逻辑通信

    2、运输层为应用程序之间提供端对端的逻辑通信

    三、端口号

      端口号是16位的,所以最大是2^16是65536,范围0-65535

    服务端使用的端口号:

      1、熟知(系统)端口号 0-1023

      2、登记端口号:1024-49151

      3、客户端使用的端口号:49152-65535

    PS:端口号只具有本地意义,换到别的机器这个端口号可能就没有意义了

    四、UDP(User datagram protocol)

      UDP就是用户数据报协议

    4.1、特点:

      1).传输属于之前不需要建立连接,发送数据不需要任何确认,不保证可靠交付。

      2).面向报文:应用层交给UDP多大的报文,UDP直接发送。因此报文的大小要合适,太长、太多都会导致IP层的效率下降。

      3).没有拥塞控制

      4).支持一对一、一对多、多对一、多对多的交互通信。

      5).首部开销小,只有8byte,比TCP的20byte要短。

    用户数据报UDP有两个字段:数据字段和首部字段

    4.2、首部字段:

      8byte,四个字段,每个字段的长度都是2byte,源端口、目标端口、长度、检验和

    UDP通信需要port,但是因为是无连接的,所以不需要使用套接字

    4.3、伪首部:

      只是为了检验和临时加的,不向上下传递

    4.4、使用场景:UDP使用场景很少的,而且编程比TCP难多了

      1).很在乎延迟,不能忍受重传,那么就用UDP,例如 NTP 协议

      2).不在乎可靠性,丢一些包也不需要重传,那么就可以用 UDP。例如:实时音视频是可以而且应该用 UDP

      3).需要NAT穿透,那么不得不用UDP,例如:一款很好用的内网穿透工具natapp

    总之:使用 UDP 需要有强大到不容置疑的理由,when in doubt, use TCP,这句话说得很好

    五、TCP

      传输控制协议 提供面向连接的服务

    5.1、特点:

      1、在传输数据之前必须先建立连接,结束之后要释放连接,只能点对点的连接

      2、提供可靠交付的服务,TCP传送的数据,无差别、不丢失、不重复、按顺序到达。

      3、全双工通信:TCP允许通信双方的应用程序在任何时候都能发送数据。client和server都设有发送缓存和接收缓存,用来临时存放

    双向通信的数据

      4、面向字节流


    5.2、TCP使用场景:

      1、聊天消息传输

      2、单人语音、视频聊天等

      3、几乎UDP能做的TCP都能做到,只是要考虑复杂性、性能问题

      4、无法进行广播、多播等操作

    5.3、发送报文:

      TCP不关心应用程序一次把多长的报文发送到TCP的缓存中,而是根据对方返回的窗口值和当前网络的拥塞程度来决定一个报文段应该包含

    多少字节,而UDP的报文长度是应用程度决定的。每一条TCP连接都有两个连接点,这个连接点称为套接字(socket)或插口。

    套接字的表示:

      端口号拼接到IP地址,例如192.168.22.37:8080

    优点:

      容易实现,即使确认丢失也不用重传,但是如果有分组丢失,就需要将丢失的分组进行重传,称为Go-back-N

    缺点:

      不能向发送方反馈所有收到的正确分组的信息

    TCP详细内容可以查看我的下一篇博客https://www.cnblogs.com/huigelaile/p/10938857.html

    TCP和UDP区别:

      1、面向连接和无连接

      2、可靠性

      3、有序性

      4、速度

      5、是否轻量级,从报文头来看

  • 相关阅读:
    Eclipse + Gradle + TestNG environment setup troubleshooting
    石家庄市教育局人才市场
    js技巧小记
    转 Browserhacks – 史上最全 CSS & JS Hack 手册
    【聊聊并发】【转】
    【深入理解Java内存模型】【转】
    Awk基本入门[1] Awk Syntax and Basic Commands
    Sed基本入门[6] Sed MultiLine Commands and loops
    Awk基本入门[2] Awk Builtin Variables
    SuperMap IS.NET 如何发布数据库型工作空间
  • 原文地址:https://www.cnblogs.com/huigelaile/p/10938457.html
Copyright © 2011-2022 走看看