【简记】Computer Networking——transport layer(part one)

本part重点:

  • 运输层为相互通信的 应用进程 提供逻辑通信
  • 端口和套接字的意义
  • 无连接的UDP的特点

5.1 运输层协议概述

5.1.1 进程之间的通信

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

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

Q:为什么需要运输层?
A:虽然网络层已经可以将分组在主机间传送。但两个主机进行通信实际上就是两个主机中的应用进程互相通信(端到端通信)。

这里写图片描述

运输层的一个很重要的功能就是复用和分用。应用层不同进程的报文通过不同的端口向下交到运输层,再往下就共用网络层提供的服务。使用同一个运输层协议。

运输层的主要功能 :

  • 运输层为应用进程之间提供端到端的逻辑通信(但网络层是为主机之间提供逻辑通信)。
  • 运输层还要对收到的报文进行差错检测。(在网络层,IP数据报的检验和字段只检验首部是否出现差错而不检验数据部分)
  • 运输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP。

两种不同的运输协议:
运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。

当运输层采用面向连接的 TCP 协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。

当运输层采用无连接的 UDP 协议时,这种逻辑通信信道是一条不可靠信道。

===
5.1.2 运输层的两个主要协议
TCP/IP 的运输层有两个不同的协议:
(1) 用户数据报协议 UDP (User Datagram Protocol)
传送的数据单位协议是 UDP 报文或用户数据报。

(2) 传输控制协议 TCP (Transmission Control Protocol)
传送的数据单位协议是 TCP 报文段(segment)

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

UDP 在传送数据之前不需要先建立连接。对方的运输层在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 是一种最有效的工作方式。

TCP 则提供面向连接的服务。TCP 不提供广播或多播服务。由于 TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。

使用UDP:
应用 应用层协议
名字转换 DNS(域名系统)
文件传送 TFTP(简单文件传送协议)
路由选择协议 RIP(路由信息协议)
IP地址配置 DHCP(动态主机配置协议)
网络管理 SNMP (简单网络管理协议)
远程文件服务器 NFS (网络文件系统)
IP电话 专用协议
流式多媒体通信 专用协议
多播 IGMP(网际组管理协议)

使用TCP:
电子邮件 SMTP (简单邮件传送协议)
远程终端输入 TELNET (远程终端协议)
万维网 HTTP (超文本传送协议)
文件传送 FTP (文件传送协议)

===
5.1.3 运输层的端口

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

需要解决的问题 :

  1. 由于进程的创建和撤销都是动态的,发送方几乎无法识别其他机器上的进程。
  2. 有时我们会改换接收报文的进程,但并不需要通知所有发送方。
  3. 我们往往需要利用目的主机提供的功能来识别终点,而不需要知道实现这个功能的进程。

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

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

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

三类端口:
熟知端口,数值一般为 0~1023。这些数值可以在www.iana.org查到
登记端口号,数值为1024~49151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在 IANA 登记,以防止重复。
客户端口号或短暂端口号,数值为49152~65535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。

这里写图片描述
(本地的端口和服务对应信息存放在%WINDOWS%\System32\drivers\etc下面services文件存放了这些信息.)


5.2 用户数据报协议 UDP
5.2.1 UDP 概述

UDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。

虽然 UDP 用户数据报只能提供不可靠的交付,但 UDP 在某些方面有其特殊的优点。

UDP 的主要特点 :

  • UDP 是无连接的,即发送数据之前不需要建立连接。
  • UDP 使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。
  • UDP 是面向报文的。一次传送一个完整的报文,不会对应用层交下来的报文做拆分。所以若运输层使用UDP,应用层需要选择合适的报文长度。
  • UDP 没有拥塞控制,很适合多媒体通信(实时应用)的要求。
  • UDP 支持一对一、一对多、多对一和多对多的交互通信。
  • UDP 的首部开销小,只有 8 个字节。

5.2.2 UDP 的首部格式
这里写图片描述
长度:UDP用户数据报的长度,最小为8
检验和:把首部和数据部分一起检验(IP层只检验首部),若有错则丢弃

在计算检验和的时候,会增加12字节的伪首部。

这里写图片描述

运算方法同ip检验和相同,但是加上了数据部分的检验。

以4bit(计算方便一点,和16bit是一样的)做检验和来验证。

建设原始数据为 1100 , 1010 , 0000(校验位)

先按照反码运算求和,1100+1010+0000 = 0111(0和0相加是0,0和1相加是1,1和1相加是0但要产生一个进位1,加到最低位) 取反填入到校验位后

1100 , 1010 , 1000

那么这个就是要发送的数据。收到数据后同样进行按位取反相加。1100+1010+1000 =1111;取反后全为0表示正确

另外注意,当第一步计算校验和的时候,有可能相加后最高位会有进位,那么不能舍弃,一定要加到低位,才能是结果正确。

若校验和发现不对,接收方应丢弃这个UDP用户数据报(或者上交给应用层,但附上差错的警告)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值