网络程序设计6-传输层协议UDP和TCP.ppt
《网络程序设计6-传输层协议UDP和TCP.ppt》由会员分享,可在线阅读,更多相关《网络程序设计6-传输层协议UDP和TCP.ppt(71页珍藏版)》请在三一办公上搜索。
1、1,传输层协议UDP和TCP,2,由以前的知识可知,点到点通信是由网络互联层来实现的,网络互联层只屏蔽了不同网络之间的差异,构建了一个逻辑上的通信网络,因此它只解决了数据通信问题。端到端通信是建立在点到点通信基础之上的,它是比网络互联层通信更高一级的通信方式,完成应用程序(进程)之间的通信。端到端的通信是由传输层来实现的。,3,传输层端到端通信什么是端到端?,4,Internet 传输层协议,可靠按序递交(TCP)拥塞控制 流量控制连接建立不可靠的无序传递:UDP“尽力传递”IP的直接扩展不提供的服务:延迟保证带宽保证,5,多路复用/多路分解,=进程,=套接字,将接收到的数据段传递到正确的套接
2、字,从多个套接字集合数据,用首部封装数据(以后用来多路分解),6,传输层端到端通信,7,传输层端口的概念为了识别传输层之上不同的网络通信程序(进程),在主机上,进行网络通信前,进程可以向系统提出动态申请,由系统(操作系统内核)返回一个本地惟一的端口号,也可以手动指定未使用的端口号,进程再通过系统调用把自己和这个特定的端口联系在一起,这个过程叫绑定(Binding)。每个要通信的进程都与一个端口号对应,传输层就可以使用其报文头中的端口号,把收到的数据送到不同的应用程序。,8,在TCP/IP协议中,传输层使用的端口号用一个16位的二进制数表示。因此,在传输层如果使用TCP协议进行进程通信,则可用的
3、端口号共有216个。由于UDP也是传输层一个独立于TCP的协议,因此使用UDP协议时也有216个不同的端口。一些常用服务的TCP和UDP的众所周知端口号举例.。,9,无连接多路分解,用端口号创建套接字:DatagramSocket mySocket1=new DatagramSocket(99111);DatagramSocket mySocket2=new DatagramSocket(99222);UDP 套接字由两个因素指定:(目的IP地址,目的端口号),当主机收到UDP数据段:检查数据段中的目的端口号用端口号指示UDP数据段属于哪个套接字具有不同的源IP地址且/或源端口号的IP数据报指
4、向同样的套接字,10,无连接多路分解(继续),DatagramSocket serverSocket=new DatagramSocket(6428);,11,面向连接的多路分解,TCP 套接字由4部分指定:源IP地址源端口号目的IP地址目的端口号接收主机使用所有四个值将数据段定位到合适的套接字,服务器主机支持很多同时的 TCP 套接字:每个套接字用4部分来标示Web服务器对每个连接的客户都有不同的套接字HTTP 将对每个请求有一个不同的套接字,12,面向连接的多路分解(继续),ClientIP:B,serverIP:C,SP:9157,DP:80,D-IP:C,S-IP:A,D-IP:C,S
5、-IP:B,D-IP:C,S-IP:B,13,常用的众所周知的TCP端口号,14,常用的众所周知的UDP端口号,15,2561023之间的端口号通常都是由Unix系统占用的,以提供一些特定的Unix服务。现在IANA管理11023之间所有的端口号。任何TCP/IP实现所提供的服务都使用11023之间的端口号。客户端口号又称为临时端口号(即存在时间很短暂)。这是因为客户端口号是在客户程序要进行通信之前,动态地从系统申请的一个端口号,然后以该端口号为源端口,使用某个众所周知的端口号为目标端口号(如在TCP协议上要进行文件传输时使用21)进行客户端到服务器端的通信。综上所述,我们知道两台要通信的主机
6、,每一端要使用一个二元地址(IP地址,端口号)才可以完成它们之间的通信。,16,用户数据报协议UDP,UDP数据报的封装及其格式使用UDP时应用进程发送的数据不能太长UDP协议在工作时是建立在IP协议之上的,UDP从进程的缓冲区接收进程每一次产生的输出,对每次输出都生成一个UDP数据报,然后把生成的UDP数据报直接封装在IP数据报中进行传输,因此在传输层使用UDP协议时,发送端不需要发送缓冲区,如图所示。,17,UDP数据报的封装,18,被封装在IP中的UDP数据报通过网络传输到目标主机的IP层后,由目标主机的UDP层根据目标端口号送到接收该数据的相应进程。UDP数据报的格式如图所示。,19,
7、UDP数据报格式,20,从UDP协议的数据报格式可以看出,UDP对数据的封装非常简单,主要是增加了端口号与校验和,然后就可以直接通过IP层进行传输了,因此它具有以下特点:(1)UDP是一种无连接、不可靠的数据报传输服务协议。(2)UDP对数据传输过程中惟一的可靠保证措施是进行差错校验,如果发生差错,则只是简单地抛弃该数据报。(3)如果目标端收到的UDP数据报中的目标端口号不能与当前已使用的某端口号匹配,则将该数据报抛弃,并发送目标端口不可达的ICMP差错报文。,21,(4)UDP协议在设计时的简单性,是为了保证UDP在工作时的高效性和低延时性。因此,在服务质量较高的网络中(如局域网),UDP可
8、以高效地工作。(5)UDP常用于传输延时小,对可靠性要求不高,有少量数据要进行传输的情况,如DNS(域名服务)、TFTP(简单文件传输)等。,22,TCP报文段的格式,23,1.建立连接 TCP使用“三次握手”建立一条连接。在建立一条连接时通信双方要交换三次报文。2关闭连接 由于TCP是一个全双工协议,因此在通信过程中两台主机都可以独立地发送数据,关闭一个连接一般要经过4次握手。,24,TCP连接的建立与关闭,25,TCP连接的建立与关闭,26,TCP的特点,通信前要建立连接支持可靠通信支持拥塞控制支持流量控制通信后需要断开连接只支持一对一通信数据没有边界(数据流),27,TCP与UDP的比较
9、,28,传输层报文实例,UDP报文,29,传输层报文实例,TCP报文,30,UDP编程模式,31,recvfrom,函数原型:ssize_t recvfrom(int sockfd,void*buf,int len,unsigned int flags,struct sockaddr*from,socket_t*fromlen);ssize_t 相当于 int,socket_t 相当于int,这里用这个名字为的是提高代码的自说明性。,32,参数,sockfd:标识一个已连接套接口的描述字;buf:接收数据缓冲区;len:缓冲区长度;flags:调用操作方式;from:(可选)指针,指向装有源地
10、址的缓冲区;fromlen:(可选)指针,指向from缓冲区长度值。,33,sendto,函数原型#include int sendto(SOCKET s,const char FAR*buf,int len,int flags,const struct sockaddr FAR*to,int tolen);s:一个标识套接口的描述字。buf:包含待发送数据的缓冲区。len:buf缓冲区中数据的长度。flags:调用方式标志位。to:(可选)指针,指向目的套接口的地址。tolen:to所指地址的长度。,34,connect,函数原型 int connect(int sockfd,const s
11、truct sockaddr*servaddr,socklen addrlen)函数的第一个参数sockfd为socket调用返回的套接口描述符。第二个参数指向套接口地址结构的指针,第三个参数为地址结构的大小。套接口地址结构中必须包含有服务器的IP地址和端口号。,35,Recv,send,函数原型 int recv(int socket,void*buffer,size_t length,int flags);int send(int socket,const void*buffer,size_t length,int flags);Flags的描述:,36,UDP的数据输出过程,UDP提供的
12、是不可靠的数据传输服务,因此,UDP套接口并没有发送缓存;应用进程的数据在沿协议栈向下传递时,以某种形式复制到内核的缓存中,当数据链路层把数据传出去后这个副本就被丢弃;TCP会在底层将应用程序数据分片,UDP不会。,37,实验改变发送缓存大小的测试,广播和多播,单播通信:网络中单一的源节点发送封包到单一的目的节点。广播通信:将封包从一个节点发送到所有其他节点。多播通信:将封包从一个节点发送到其他多个网络节点的集合。,广播通信,广播、多播仅适用于UDP协议广播的负面作用是明显的:多个进程都发送广播数据,网络性能会受到影响。几乎所有路由器都不转发广播数据,广播程序仅应用于本地子网。,数据过滤过程,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络程序设计 传输 协议 UDP TCP

链接地址:https://www.31ppt.com/p-6600056.html