网络编程书籍讲义第四讲.ppt
《网络编程书籍讲义第四讲.ppt》由会员分享,可在线阅读,更多相关《网络编程书籍讲义第四讲.ppt(27页珍藏版)》请在三一办公上搜索。
1、第1页,人民邮电出版社,第4章 互联网络层,第2页,4.1传输层的通信与端口,4.1.1点到点通信与端到端通信在互联网中,任何两台通信的主机之间,从源端到目标端的信道都是由一段一段的点到点通信线路组成的(一个局域网中两台主机通信时只有一段点到点的线路)。直接相连的节点之间对等实体(源节点的IP层和目标节点的IP层)的通信,叫点到点(point to point)通信。点到点的通信是由网络互联层来实现的,网络互联层只是屏蔽了不同网络之间的差异,构建了一个逻辑上的通信网络,因此它只是解决了数据通信问题。现在我们的问题是在网络中传输的数据,在源主机上从何而来,送到目标主机的何处去。回答这个问题很简单
2、,因为源主机到目标主机之间的通信,本质上是源主机上的应用程序与目标主机上的应用程序之间的通信,因此源主机上IP层要传输的数据来源于它的网络应用程序,最终要通过目标主机的IP层,送到目标主机上需要使用数据的某个特定网络应用程序。这样在源主机和目标主机之间,好像有一条直接的数据传输通路,它覆盖了低层点到点之间的传输过程,直接把源主机应用程序产生的数据,传输到目标主机使用这些数据的应用程序,这就是端到端(end to end)的通信。端到端通信是建立在点到点通信基础之上的,它是比网络互联层通信更高一级的通信方式,完成应用程序(进程)之间的通信。端到端的通信是由传输层来实现的。,第3页,4.1传输层的
3、通信与端口,4.1.2 端口的概念与功能传输层端口的概念是怎么来的呢?我们知道,数据链路层接收到数据帧之后,由数据帧中的协议类型字段(以太网)就可以知道要把数据送到高层的哪个协议(见表3-10所示)。IP层在收到低层送来的数据时,根据IP数据报头中的上层协议类型字段,就可以知道要把IP数据报送到高层的哪个协议(见表3-2所示)。在TCP/IP协议的传输层之上是应用层,现在用户使用的操作系统都是多任务操作系统,也就是说在IP层之上,可能有多个网络应用程序(进程)在进行数据传输,哪么传输层收到的数据究竟要送到哪个应用程序呢?,第4页,4.1传输层的通信与端口,4.1.2 端口的概念与功能为了识别传
4、输层之上不同的网络通信程序(进程),传输层引入了端口的概念。在一台主机上,要进行网络通信的进程,首先要向系统提出动态申请,由系统(操作系统内核)返回一个本地惟一的端口号,进程再通过系统调用把自己和这个特定的端口联系在一起,这个过程叫绑定(binding)。这样每个要通信的进程都与一个端口号对应,传输层就可以使用其报文头中的端口号,把收到的数据送到不同的应用程序。在TCP/IP协议中,传输层使用的端口号用一个16位的二进制数表示。因此,在传输层如果使用TCP协议进行进程通信,则可用的端口号共有64K个。由于UDP也是传输层一个独立于TCP的协议,因此使用UDP协议时也有64K个不同的端口。IP地
5、址 用来区分 不同的网络设备的PORT 用来区分 同一个网络设备上不同的进程(应用程序),第5页,4.1传输层的通信与端口,4.1.3 常用的端口如果按上面所论述的,每个要通信的进程在通信之前,都要先通过系统调用动态的申请一个端口号。这样就有一个问题,相距遥远的两个进程,它们之间进行通信时,怎么知道对方的端口号呢?如果不知道对方进程的端口号,通信也就无法进行。其实我们知道,两个进程在进行通信时,总有一方要首先提出通信的请求,而另一方一直处于等待状态,准备来响应其它主机对它提出的请求。提出请求的一方就是客户端,响应客户的请求的一方就是服务器,这是典型的客户-服务器模式。客户端在提出请求时一定先要
6、知道对方的端口号,为此TCP/IP协议在进行设计时,把服务器上守候进程的端口号进行静态分配。特定的服务对应一个特定的端口号,这些端口号是事先已经分配好的,是众所周知的(well-known port)的端口号。顾名思义,客户要使用的由服务器进程提供的服务,客户已经知道它们的端口号。例如,FTP服务器的TCP端口号都是21,Telnet服务器的TCP端口号都是23,TFTP(简单文件传送协议)服务器的UDP端口号是69。众所周知的端口号介于1255之间,这些端口号由Internet号分配机构IANA(Internet Assigned Numbers Authority)来管理。一些常用服务的T
7、CP和UDP的众所周知端口号见表4-1和表4-2。,第6页,4.1传输层的通信与端口,4.1.3 常用的端口,第7页,4.1传输层的通信与端口,4.1.3 常用的端口,第8页,4.1传输层的通信与端口,4.1.3 常用的端口2561023之间的端口号通常都是由Unix系统占用,以提供一些特定的Unix服务。现在IANA管理11023之间所有的端口号。任何TCP/IP实现所提供的服务都使用11023之间的端口号。客户端口号又称作临时端口号(即存在时间很短暂)。这是因为客户端口号是在客户程序要进行通信之前,动态的从系统申请的一个端口号。然后以该端口号为源端口,使用某个众所周知的端口号为目标端口号(
8、如在TCP协议上要进行文件传输时使用21)进行客户端到服务器端的通信,通信完成后,客户端的端口号就被释放掉,而服务器只要其服务在运行,其相应端口上的服务就存在。另外,大家可能已经想到了,当服务器要向客户端传输数据时,服务器怎么知道客户端临时分配的端口号呢?由于服务器可以从客户的请求报文中获得其端口号,因此也可以正常通信。大多数TCP/IP实现时,给临时端口分配10245000之间的端口号。大于5000的端口号是为其它服务预留的(Internet上并不常用的服务)。综上所述,我们知道两台要通信的主机,每一端要使用一个二元地址(IP地址,端口号),才可以完成它们之间的通信。端到端之间的一条通信就可
9、能表示为(源主机IP地址,源端口号;目标主机IP地址,目标端口号),IP地址用来标识互联网中的两台通信的特定主机,端口号用来标识特定主机上通信的进程。在进行网络程序设计时这是最基本的知识。,第9页,4.2用户数据报协议(UDP),4.2.1 UDP数据报UDP(User Data Protocol)是网络层之上常用的一个非常简单的协议,它主要是在IP层之上提供了协议端口功能,以标识源主机和目标主机上通信的进程。因此,UDP只能保证进程之间通信的最基本要求,而没有提供数据传输过程中的可靠性保证措施,所以大家常把它称为无连接,不可靠的通信协议,这可以通信它的协议格式非常明显地看出。UDP协议在工作
10、时是建立在IP协议之上的,UDP从进程的缓冲区接收进程每一次产生的输出,对每次输出都生成一个UDP数据报,然后把生成的UDP数据报直接封装在IP数据报中进行传输,因此在传输层使用UDP协议时,发送端不需要发送缓冲区。被封装在IP报文中的UDP数据报,通过网络传输到目标主机的IP层后,由目标主机的UDP层根据目标端口号送到接收该数据的相应进程。,第10页,4.2用户数据报协议(UDP),4.2.1 UDP数据报,第11页,4.2用户数据报协议(UDP),4.2.2 伪首部与校验和UDP头部的校验和是一个用16位二进制数表示的错误检查字段,它是一个可选项。如果发送端为了提高UDP协议的工作效率,可
11、以不计算该字段的值,这时填入0。UDP校验和的计算除了包含UDP首部和UDP数据区外,还包含了一个12个字节长的伪首部(pseudo header)。顾名思义,这个伪首部它并不是UDP的真正组成部分,它只是为了UDP在进行差错检查时,可以把更多的信息包含进去而人为加上的。伪首部的格式如图4-5所示。从伪首部的构成就可以看出,它主要是加入了IP地址信息,因为如图4-4所示的UDP数据报中并不包含与IP地址有关的信息,如果只以UDP数据报为依据计算校验和,就无法对目标地址的正确性进行检查。,第12页,4.2用户数据报协议(UDP),伪首部包含IP首部的一些字段,填充域全填0,目的是使伪首部为16位
12、二进制数的整数倍,这是计算校验和时所需要的。协议字段的值为17,UDP长度为UDP数据报的总长(当然不能包括虚构的伪首部)。源端在发送UDP数据报时,使用构造的UDP伪首部和UDP数据报计算出校验和(校验和的计算方法同IP首部校验和的计算方法相同),然后填入UDP首部。目标端在收到UDP数据报时,同样使用构造的UDP伪首部和UDP数据报计算出校验和,在计算时如果包括校验和字段,则计算结果为0(如果不包括校验和字段,则计算结果应与源端计算的结果一样),表明报文在传输过程中没有出现差错。另外,还有两个问题,一是在计算UDP校验和时,如果UDP数据报(UDP的首部为8个字节,但数据区长度是可变的)的
13、总长度为奇数个字节,就要在数据报最后增加一个值为0的填充字节,这只是为了检验和的计算(因为检验和的算法是以16位二进制数为一个量计算的),但该字节并不一定被传送出去。二是如果检验和的计算结果为0时,则校验和存入的值为全1(即65535,表示0的反码),以区别没有计算校验和时直接填入的0。,第13页,4.2用户数据报协议(UDP),从UDP协议的数据报格式可以看出,UDP对数据的封装非常简单,主要加了端口号与校验和后,直接通过IP层进行传输,因此它具有如下的几个特点:UDP是一种无连接、不可靠的数据报传输服务协议。UDP不与远端的UDP模块保持端对端的连接,它仅仅是把数据报发向网络,并从网络接收
14、传来的数据报。关于连接的问题学完TCP后,可能更容易理解。UDP对数据传输过程中惟一的可靠保证措施是进行差错校验,如果发生差错,则只是简单的抛弃该数据报。如果目标端收到的UDP数据报中的目标端口号,不能与当前已使用的某端口号匹配时,则将该数据报抛弃,并发送目标端口不可达的ICMP差错报文。UDP协议在设计时的简单性,是为了保证UDP在工作时的高效性和低延时性。因此,在服务质量较高的网络中(如局域网),UDP可以高效地工作。UDP常用于传输延时小,对可靠性要求不高,有少量数据要进行传输的情况,如DNS(域名服务)、TFTP(简单文件传输)等。,第14页,4.3传输控制协议(TCP),4.3.1
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 编程 书籍 讲义 第四
链接地址:https://www.31ppt.com/p-5450696.html