- 1、本文档共55页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
UDP协议(用户数据报协议)和TCP相似,同属传输层协议,都作为应用程序和网络传输的中介。UDP是一个简单的面向数据报的运输层协议,其进程的每个输出操作都正好产生一个UDP数据报,并组装成一份待发送的IP数据报。UDP与面向连接的协议TCP不同,它不提供可靠性:它把应用程序传给IP层的数据发送出去,但是并不保证它们能到达目的地。本地主机和远程主机用IP地址来定义,而定义进程可用端口号(一个0~65535之间的整数)。ARP是地址解析协议,用来将一个逻辑地址映射为物理地址,这是属于网络接口层的协议模块。当主机有数据包要发送给另一个主机时,如果只知道对方的逻辑地址(IP地址)而不清楚对方的物理地址(MAC),则无法将数据完整地封装成以太网帧格式的数据包。ARP的作用就是实现上层的IP地址与底层的物理地址进行绑定。根据目标IP地址产生一个请求ARP报文,填入发送站的物理地址,发送站的IP地址及目标IP地址。目标物理地址为全0。每一个主机或路由器都收到这个帧。所有站都将此报文送交给自己的ARP处理程序,除目标机器外,所有机器都丢弃这个分组,目标机器识别这个IP。发送站收到回答报文,得到目标物理地址。将报文传给数据链路层。在此层它被封装成帧,使用发送站的物理地址作源地址,使用物理广播地址为目的地址。目标机器用ARP报文进行回答。此报文包含它的物理地址,报文用单播。发送站用单播将IP数据报发给目的站。ARP处理过程文件传输协议01简单邮件传输协议02电子邮件协议(V3)03超文本传输协议04传输控制协议05用户数据协议06网际协议07Internet控制消息协议08地址解析协议09嵌入式网络协议栈实现原理套接口(socket)是最常用的网络编程API,是传输层到应用层的接口。应用程序就是通过这个接口访问网络中对方的应用程序的。1应用程序中调用套接口的函数(如send,recv等)则要通过套接口描述字(通常简称套接字)来访问套接口。2文件描述字习惯地表示为fd,套接字则习惯地表示为sd或sockfd。而实际上在UNIX内核实现中,fd和sd都是用户打开文件表中的索引号,它们均指向数据结构file,后者再指向vnode(inode/socket)。最终fd指向inode,而sd则指向socket。inode指向文件的磁盘块,而socket则指向在网络中传递数据的内存缓冲队列。3(2)套接口与套接字面向连接与socket函数TCPserversocket()bind()listen()accept()(等待client连接)read()处理请求write()read()close()TCPclientsocket()connect()write()read()close()建立连接(三次握手)requestreplyendoffile本地ipaddr,port远地ipaddr,portserverbind()listen,acceptclientconnectsocket函数与四元组的建立非连接与socket函数UDPClientsocket()(bind())sendto()recvfrom()UDPServersocket()bind()recvfrom()处理请求sendto()requestrepleySocket函数与四元组的建立本地ipaddr,port远地ipaddr,portserverbind()recvfrom()clientsendto/bind()sendto()如前所述,TCP/IP协议的应用一般采用客户/服务器模式,因此在实际应用中,必须有客户和服务器两个进程,并且首先启动服务器,其系统调用时序图如下。面向连接的协议(如TCP)的套接字系统调用如下页图示。服务器必须首先启动,直到它执行完accept()调用,进入等待状态后,方能接收客户请求。假如客户在此前启动,则connect()将返回出错代码,连接不成功。321典型套接字调用过程服务器方客户方无连接协议的套接字调用如下页图所示。01无连接服务器也必须先启动,否则客户请求传不到服务进程。02无连接客户不调用connect()。因此在数据发送之前,客户与服务器之间尚未建立完全相关,但各自通过socket()和bind()建立了半相关。03发送数据时,发送方除指定本地套接字号外,还
文档评论(0)