计算机网络学习笔记11进程通信与端口号TCPUDPIPv6

Posted 正月十六工作室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了计算机网络学习笔记11进程通信与端口号TCPUDPIPv6相关的知识,希望对你有一定的参考价值。

【计算机网络学习笔记11】进程通信与端口号、TCP、UDP、IPv6

一、 进程通信与端口号

从路由器来看,通信的两端是主机。实际上真正的通信是一台主机中的一个进程和另一台主机中的一个进程在交换数据。因此严格上讲,两台主机进行通信就是两台主机中应用进程互相通信。IP协议虽然能把分组送到目的主机,但是这个分组还是停留在主机的网络层而没有交付主机中的应用进程。从数据传输的角度看,通信的真正端点不是主机,而是主机中的进程,也就是说,端到端的通信是应用进程之间的通信。为了解决进程标识问题,在一台计算机中,不同进程需要用进程号(Process ID)唯一地标识,进程号又称为端口号。

进程通信

主机应用进程之间端到端的连接由传输控制协议TCP和用户数据包协议UDP来定义,这也是传输层最重要的两协议。
两个对等传输层实体在通信时传送的数据单位为“传输协议数据单元(Transport Protocol Data Unit,TPDU)

IP协议和TCP、UDP协议的区别

IP协议为主机之间提供逻辑通信,而TCP、UDP协议为应用进程之间提供端到端的逻辑通信。

复用(Multiplexing)和分用(Dumultiplexing)

复用是指在发送方不同的应用进程都可以使用同一个运输层协议传送数据

分用是指接收方的运输层在剥去报文的首部后能够把这些数据正确交付目的应用进程

在网络环境中,一个进程的全网的标识应用三元组:协议、本地地址和本地端口号

分布式进程通信要涉及两个不同的进程,因此,一个完整的进程通信需要一个五元组标识,五元组为:协议、本地地址、本地端口号、远程地址与远程端口号

端口号的分配方式

Internet符号管理局(The Internet Assigned Numbers Authority ,IANA)定义的端口号有3种类型:熟知端口号、注册端口号和动态端口号。

熟知端口号,其数值范围为0~1023,由IANA负责分配给一些常用的应用层程序固定使用。

注册端口号,其数值范围1024~49151,此类端口号可以在IANA注册登记。

动态端口号,其数值范围49152~65535,客户进程使用动态端口号,是由运行在客户上的TCP/UDP软件随机选取的。动态端口号只对一次进程通信有效,通信结束后,端口号边不复存在。

二、 TCP

TCP位于TCP/IP模型的传输层,它是一种面向连接的端到端协议。TCP作为传输控制协议可以为主机提供可靠的数据传输。
TCP的特点

  1. 支持面向连接得到传输服务
  2. 支持全双工通信
  3. 支持同时建立多个并发的TCP连接
  4. 支持可靠的传输服务
  5. 支持面向字节流的传输
    TCP的数据报文格式
    TCP虽然是面向字节流的,但TCP传送的数据单元却是报文段。TCP报文段由TCP Header(头部)和 TCP Data(数据)组成。TCP最多可以有60个字节的头部,前2o个字节是固定的,后面的Options为可选项字段,长度为4*N字节(N必须是整数),最多为40字节如图1所示。

    图1 TCP报文段的结构

TCP的连接管理

TCP是面向连接的协议,所以连接的建立和释放是每一次面向连接的通信中必不可少的过程。因此,TCP的连接有3个阶段:连接建立、数据传送和连接释放

  1. TCP的连接建立
    如图2所示,TCP连接的建立是一个三次握手(Three-Way Handshake)的过程

    图2 TCP连接建立

(1)主机 PC1(通常也称为客户端)发送一个标识了SYN的数据段,表示期望与HTTP服务器建立连接、此数据段的序列号(seq)为a。
(2)HTTP服务器回复标识了SYN+ACK的数据段,此数据段的序列号(seq)为b,确认序列号为主机 PC1的序列号加1(即a+1)以此作为对主机 PC1的SYN 报文的确认。
(3)主机 PC1发送一个标识了ACK的数据段,此数据段的序列号(seq)为a+l,确认序列号为HTTP服务器的序列号加1(即 b+1),以此作为对HTTP服务器的SYN报文段的确认。

TCP连接的释放

TCP支持的是全双工的工作模式,也就是说在同一时刻两个方向都可以进行数据的传输。在传输数据之前,TCP通过三次握手建立的买际上是两个方向的连接,因此在传输完毕后,两个方向的连接必须都关闭。

TCP连接的建立是一个三次握手的过程,而TCP连接的终止则要经过四次握手。TCP传输连接的释放过程比牧发杂,各尸和服务器都可以主动提出连接释放请求。图3所示是客户端主动提出请求的连接释放的“四次握手”的过程。

图3 TCP连接的释放

(1)主机PC1想终止连接,于是向 HTTP服务器发送一个标识了FIN、ACK的数据段,序列号为m,确认序列号为n。
(2)HTTP服务器回应一个标识了ACK 的数据段,序列号为n,确认序号为m+1作为对主机 PC1的FIN报文的确认。
( 3) HTTP服务器想终止连接,于是向主机PC1发送一个标识了FIN、ACK的数据段,序列号为x,确认序列号为m+1。
(4)主机PC1回应一个标识了ACK 的数据段,序列号为m+l,确认序号为x+1作为对HTTP服务器的FIN报文的确认。
以上四次交互便完成了两个方向连接的关闭。

TCP的计时器

TCP使用了四类计时器(Timer),分别是重传计时器(Re-transmission Timer)、坚持计时器(Persistence Timer)、保活计时器(Keep-alive Timer)和时间等待计时器(Time-wait Timer)。

三、 UDP

UDP是一种面向无连接的传输协议,传输可靠性没有保证。UDP将数据从源端发送到目的端时,无须事先连接。当应用程序对传输的可靠性要求不高,但是对传输速度和延迟要求较高时,可以使用UDP代替TCP在传输控制数据的转发。

UDP数据报格式

图5 DUP 用户数据报的格式

UDP适用的范围

根据UDP的传输特点,UDP多用于一下几个方面:

  1. 视频播放类应用
  2. 简短的交互式应用
  3. 多播与广播应用

四、 下一代网际协议IPV6

IPv6优势

  1. IPv6具有更大的地址空间
  2. IPv6使用更小的路由表
  3. IPv6增加了增强的组播支持以及流支持
  4. IPv6加入了对自动配置的支持
  5. IPv6具有更高的安全性

IPv6的首部


图6 IPv6报文首部格式

Version:
版本号,长度4bit。对于IPv6,该值为6。

Traffic Class:
流类别,长度8bit。等同于IPv4的ToS字段,表示IPv6数据包的类或优先级,主要用于QoS。

Flow Label:
流标签,长度20bit。IPv6中新增的字段,用于区分实时流量,不同的流标签+源地址可以唯一确定一条数据流,中间网络设备可以根据这些信息更加高效率的区分数据流。

Payload Length:
有效载荷长度,长度16bit。有效载荷是指紧跟IPv6包头的数据包的其他部分(即扩展包头和上层协议数据单元)。

Next Header:
下一包头,长度8bit。该字段定义紧跟IPv6包头后面的第一个扩展包头的类型,或者上层协议数据单元中的协议类型(类似于IPv4的Protocol字段)。

Hop Limit:
跳数限制,长度8bit。该字段类似于IPv4中的Time to Live字段,它定义了IP数据包所能经过的最大跳数。每经过一个路由器,该数值减一当该字段为0时,数据包将被丢弃。

Source Address:
源地址,长度128bit。表示发送方地址。

Destination Address:
目的地址,长度128bit。表示接送方地址。

IPv6寻址

IPv6定义了一下地址类型:单播地址、任播地址、组播地址

IPv6地址分类

根据IPv6地址前缀,可以分为单播地址、组播地址和任播地址。

1 单播地址

全球单播地址(GUA):2000::/3
唯一本地地址(ULA):FD00::/8
链路本地地址(LLA):FE80::/10
单播地址(UA):标识一个接口。在IPv6中,一个接口拥有多个IPv6地址是非常常见的现象。

2 特殊的单播地址

2.1 未指定地址
0:0:0:0:0:0:0:0/128。该地址作为某些报文的源地址,比如作为重复地址检测时发送的邻居请求报文(NS)的源地址,或者DHCPv6初始化过程中客户端所发送的请求报文的源地址。

2.2 环回地址
0:0:0:0:0:0:0:1/128,与IPv4中的127.0.0.1作用相同,用于本地环回,可用于本地协议栈环回测试。

3 组播地址(MA)

标识多个接口,只有加入相应组播组的设备才会侦听发往该组播地址的报文。
组播地址一般用于“一对多”,只能作为IPv6报文的目的地址;
IPv6组播地址各字段值对应的组播组类型和范围;
Flags:
0000表示永久分配或众所周知 0001表示临时的

Scope:
0:预留
1:节点本地范围;单个接口有效,仅用于loop back通讯
2:链路本地范围;例如FF02::1
5:站点本地范围
8:组织本地范围
E:全球范围
F:预留

4 被请求节点组播地址

当一个节点具有单薄或任播地址,就会对应的生成一个被请求节点组播地址,并加入组播组。该地址主要用于邻居的发现机制和地址重复检测功能。被请求节点组播地址的有效范围为本地链路范围。

5 任播地址(AA)

任播地址标识一组网络接口(通常属于不同节点)。目的地址是任播地址的数据包将发送给其中路由意义上最近的一个网络接口。
任播地址可以作为IPv6报文的源地址,也可以作为目的地址。
任播报文的发起方通常为请求某一服务的主机;任播地址与单播地址在格式上无任何差异,唯一的区别是一台设备可以给多台具有相同地址的设备发送报文。

6 网络中使用任播地址的优势

6.1 业务冗余
当一台服务器发生故障,任播报文的发起方能过自动与使用相同地址的另一台服务器通信,从而实现业务冗余。
6.2 优质服务
提供更优质的服务,任播过程涉及一个任播报文发起方和一个或多个响应方。
IPv6没有定义广播地址。在IPv6网络中,所有广播的应用层场景将被IPv6组播所取代。

过度技术

双栈策略

双栈机制就是使IPv6网络节点具有一个IPv4栈和一个IPv6栈,同时支持IPv4和IPv6协议。IPv6和IPv4是功能相近的网络层协议,两者都应用于相同的物理平台,并承载相同的传输层协议TCP或UDP,如果一台主机同时支持IPv6和IPv4协议,那么该主机就可以和仅支持IPv4或IPv6协议的主机通信。

隧道技术

隧道机制就是必要时将IPv6数据包作为数据封装在IPv4数据包里,使IPv6数据包能在已有的IPv4基础设施(主要是指IPv4路由器)上传输的机制。随着IPv6的发展,出现了一些运行IPv4协议的骨干网络隔离开的局部IPv6网络,为了实现这些IPv6网络之间的通信,必须采用隧道技术。隧道对于源站点和目的站点是透明的,在隧道的入口处,路由器将IPv6的数据分组封装在IPv4中,该IPv4分组的源地址和目的地址分别是隧道入口和出口的IPv4地址,在隧道出口处,再将IPv6分组取出转发给目的站点。隧道技术的优点在于隧道的透明性,IPv6主机之间的通信可以忽略隧道的存在,隧道只起到物理通道的作用。隧道技术在IPv4向IPv6演进的初期应用非常广泛。但是,隧道技术不能实现IPv4主机和IPv6主机之间的通信。


作者: 郑伟钦
排版: 胖虎
初审: 正山小种
复审: 二月二

更多视频课程请访问 “CSDN 正月十六工作室讲师学院首页

以上是关于计算机网络学习笔记11进程通信与端口号TCPUDPIPv6的主要内容,如果未能解决你的问题,请参考以下文章

进程ID[PID(Process ID)]与端口号[(Port ID)]的联系

VC++使用socket进行TCPUDP通信实例总结

socket笔记TCPUDP通信总结

为什么TCPUDP套接字服务器端需要绑定端口号客户端不需要?

Linux网络编程 传输层 TCP/UDP

Linux网络编程 传输层 TCP/UDP