第五章 传输层

传输层 #

面向通信的最高层,面向用户功能的最底层

物理层-数据链路层-网络层实现【主机到主机】的连接

但是通信实体是进程(多种应用都有通信需求),这叫端到端连接

image-20230625184417324

通过端口区分不同应用:

image-20230625184632572

根据需求的不同提供了两种不同协议:TCP UDP

端口号 #

在操作系统中是PID区分进程,但是网络中的主机并不是使用相同的操作系统,于是有了在网络中的统一标识规则:端口号

端口号用16bit表示,分为几种:

  • 服务器端:

    • 熟知端口号: \(0 \sim 2^{10}-1\) ,分给最重要的一些应用
      • 比如 FTP(21/20) ,HTTP(80),DNS(53),SCP(22) 这些应用协议程序都有固定的端口号
    • 登记端口号: \(2^{10} \sim 49151\)
      • 供给没有熟知端口号的特定进程,需要在IANA登记
  • 客户端:

    • 短暂端口号: \(49151 \sim 2^{16}-1\)
      • 客户进程运行时才动态选择,是临时的,通信结束被释放,并不专属于某个程序

端口号用以区分主机内的不同进程,它是本地的,而IP地址区分不同主机

套接字Socket就是IP地址+端口号,表示哪台主机上的哪个进程,如果只有端口号只能是本地主机上的哪个进程

A向B通信时也是把自己的源端口号一起发过去的,这样B才能发送回A

复用和分用概念 #

发送方复用:指的是使用同样的封装

接收方分用:同样的封装但是含义不同

比如最后都是打包成IP数据报,这叫复用,但是运输层的协议可能是TCP也可能是UDP,能进行区分(有协议字段),这叫分用

image-20230625190238008
应用层常见协议所用的运输层协议和熟知端口号
image-20230625190410787 协议字段区分是TCP还是UDP,端口号区分是哪个应用

TCP与UDP对比 #

TCP/IP协议族中:

  • TCP:面向连接,需要三次握手才能通信
    • 开销比较大
  • UDP:无连接,随时通信
    • 收到报文后无需返回确认信息
image-20230625191628727

UDP支持单播、多播和广播,而TCP只能单播(一对一)

UDP不对应用层报文处理,仅加上UDP头部,而TCP则是将其看成字节流

image-20230625192000099

UDP对应用层来说仍是提供的不可靠传输,而TCP是确保了可靠传输