版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、OSI各层的主要功能:物理层:通常规定网络传输媒体的机械、电气、功能、规程等特性,用来实现数据链路实体间透明的比特(Bit)流传输。数据链路层:提供链路管理、帧同步、差错控制、流量控制、寻址等功能主要用途是为在相邻网络实体之间建立、维持和释放数据链路连接,并传输数据链路服务数据单元。网络层:提供路由选择、流量控制等功能,实现源DCE(DataCommunicationEquipment)和目标DCE之间的通信建立、维护和终止网络连接,并通过网络连接交换网络服务数据单元。运输层:主要完成从会话层接收数据,并且把它分成较小的单元,传输给网络层,在优化网络服务的基础上,为源主机和目标主机之间提供可靠的价格、合理的透明传输,使其上面的高层不必关心通信子网的实现细节。会话层:管理和终止两个通信主机之间的会话。表示层:确保一个系统的应用层发送的信息能被另一个系统的应用层读取。应用层:提供给人们解决具体问题的功能,是用户使用OSI功能的惟一窗口。2、TCP/IP各层的主要功能:网络接口层:主机至网络层:代表了传输能力以及接口的使用。网络层:使主机可以把分组发往任何网络并且使分组独立地传向目标。传输层:主要实现两个不同的协议无连接的UDP和面向联接的TCP。应用层:提供解决具体应用问题的功能。TCP特点:面向连接、点对点、可靠、全双工、面向字节流UDP特点:无连接、不可靠、无拥塞控制、面向报文、交互通信主要步骤服务器创建套接字SOCEKTsocket(intaf,inttype,intprotocol);绑定端口号intbind(SOCKETs,conststructsockaddrFAR*name,intnamelen);监听(UDP没有)intlisten(SOCKETs,intbacklog);接收连接(UDP没有)SOCKETaccept(SOCKETs,structsockaddrFAR*addr,intFAR*addrlen)客户进程调用socket创建客户套接字客户向服务器发出一个请求,建立链接,使用connect函数,函数原型如下:intconnect(SOCKETs,conststructsockaddrFAR*name,intnamelen);h.此时,客户机的套接字已经接收到服务器的信号,接下来可以进行数据传送了,可以用send和recv函数来收发数据,函数原型如下:intsend(SOCKETs,constcharFAR*buf,intlen,intflags);intrecv(SOCKETs,charFAR*buf,intlen,intflags);intsendto(SOCKETs,char*buf,intlen,intflags,structsockaddr*to,inttolen);intrecvfrom(SOCKETs,char*buf,intlen,intflags,structsockaddr*from,int*fromlen);I:关闭连接intclosesocket(SOCKETs);TCP服务器:charsztext[]="欢迎你\r\n”;s=::socket(AF_INET,SOCK_STREAM,0);sockaddr_inaddr,addr2;intn=sizeof(addr2);addr.sin_family=AF_INET;addr.sin_port=htons(10037);addr.sin_addr.S_un.S_addr=INADDR_ANY;::bind(s,(sockaddr*)&addr,sizeof(addr));::listen(s,2);chartext[1000];printf("服务器已经启动\r\n");while(true)(s1=::accept(s,(sockaddr*)&addr2,&n);if(s1!=NULL){printf("%s已经连接上\r\n”,inet_ntoa(addr2.sin_addr));::send(s1,sztext,sizeof(sztext),0);}::closesocket(s);::closesocket(s1);TCP客户端:charsztext[10]={0};s=::socket(AF_INET,SOCK_STREAM,0); 〃创建TCP套接字sockaddr_inaddr; 〃定义套接字地址结构addr.sin_family=AF_INET; //初始化地址结构addr.sin_port=htons(10037);addr.sin_addr.S_un.S_addr=inet_addr("");printf("客户端已经启动\r\n"); 〃输出提示信息::connect(s,(sockaddr*)&addr,sizeof(addr));::recv(s,sztext,sizeof(sztext),0);printf("%s\r\n",sztext);::closesocket(s); 〃关闭套接字句柄::WSACleanup(); 〃释放套接字库UDP服务器:{//WSA启动省略charsztext[]="欢迎你\r\n”;s=::socket(AF_INET,SOCK_DGRAM,0);//SOCK_DGRAM数据报套接字sockaddr_inaddr,addr2;intn=sizeof(addr2);charbuff[11]={0};addr.sin_family=AF_INET;addr.sin_port=htons(75);addr.sin_addr.S_un.S_addr=INADDR_ANY;::bind(s,(sockaddr*)&addr,sizeof(addr));printf("UDP服务器已经启动\r\n");while(1){if(::recvfrom(s,buff,11,0,(sockaddr*)&addr2,&n)!=0){printf("%s已经连接上\r\n”,inet_ntoa(addr2.sin_addr));printf("%s\r\n",buff);::sendto(s,sztext,sizeof(sztext),0,(sockaddr*)&addr2,n);break;}}::closesocket(s);::WSACleanup();UDP客户端:charsztext[]="服务器,你好!\r\n";s=::socket(AF_INET,SOCK_DGRAM,0);sockaddr_inaddr,addr2;intn=sizeof(addr2);charbuff[10]={0};addr.sin_family=AF_INET;addr.sin_port=htons(75);addr.sin_addr.S_un.S_addr=inet_addr("");printf("UDP客户端已经启动\r\n");if(::sendto(s,sztext,sizeof(sztext),0,(sockaddr*)&addr,n)=0){::recvfrom(s,buff,10,0,(sockaddr*)&addr2,&n);printf("服务器说:%s\r\n",buff);::closesocket(s);::WSACleanup();}-ARP是AddressResolutionProtocol(地址转换协议)的简称,是TCPIP协议中最底层的协议之一。它的作用是完成IP地址到MAC(物理地址)的转换。•原理:当主机A要和主机B通信(如主机APing主机B)时。主机A会先检查其ARP缓存内是否有主机B的MAC地址。如果没有,主机A会发送一个ARP请求广播包,此包内包含着其欲与之通信的主机的IP地址,也就是主机B的IP地址。当主机B收到此广播后,会将自己的MAC地址利用ARP响应包传给主机A,并更新自己的ARP缓存,也就是同时将主机A的IP地址/MAC地址对保存起来,以供后面使用。主机A在得到主机B的MAC地址后,就可以与主机B通信了。同时,主机A也将主机B的IP地址/MAC地址对保存在自己的ARP缓存内。-GetIpNetTable功能:使用IP帮助来获取和修改ARP表信息SetIpNetEntry向ARP表添加入口DeleteIpNetEntry删除ARP入口函数SendARP 发送一个带有目的IP地址的ARP请求去获取一个MAC地址套接字,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。端口号的分配机制•网络进程通信前必须获知对方的进程地址。•由于网络应用程序大多采用C/S模式开发,通信总是由客户机发起,因此事先只需让客户机知道服务器的进程地址即可。•Internet中为客户服务的众所周知的服务有限。TCP/IP协议采用了全局分配(静态分配)和本地分配(动态分配)相结合的分配方法。•对于TCP或UDP,将它们的全部65535个端口号分为保留端口号和自由端口号两部分。保留端口号,范围是0—1023,又称为众所周知的端口或熟知端口(well-knownport),只占少数,采用全局分配或集中控制的方式,由一个公认的中央机构根据需要进行统一分配,静态地分配给因特网上著名的众所周知的服务器进程,并将结果公布于众。TCP的保留端口UDP的保留端口FTP21DNS53HTTP80TFTP69SMTP25SNMP161POP3110阻塞模式在阻塞模式下,程序在调用接收函数时(如recv),如果没有数据到达,此函数会一直等待,即当前线程会被阻塞,直到有数据时才返回!换句话说,没有数据到达时,程序回在这行代码上等待,不继续往下执行。有数据到达后,函数返回非阻塞模式在非阻塞模式下,程序在调用接收函数时,接收函数会立即返回,调用方还可以进行其它操作,而当有数据到达进,操作系统会通过某些方法(如事件)来通知你!换句话说,不论是
否有数据到达,程序一直往下执行。而数据到达后,操作系统会通知程序,程序根据操作系统通知的信息来做相应处理在非阻塞模式下利用socket事件的消息机制,Server端与Client端之间的通信处于异步状态下。通常需要从CSocket类派生一个新类,派生新类的目的是重载socket事件的消息函数,然后在socket事件的消息函数中添入合适的代码以完成Client端与Server端之间的通信,与阻塞模式相比,非阻塞模式无需创建一个新线程。5.3CSocket类的编程模型下面给出针对流式套接字的CSocket类的编程模型。分为服务器端和客户端。服务器端CSocketsockServ;//创建空的服务器端监听套接字对象。//用众所周知的端口,创建监听套接字对象的底层套接字句柄。//启动对于客户端连接请求的监听。//创建空的服务器端连接套接字对象。并将其他的任务转交给连接套接字对象。sockServ.Create(nPort//启动对于客户端连接请求的监听。//创建空的服务器端连接套接字对象。并将其他的任务转交给连接套接字对象。sockServ.Listen();CSocketsockRecv;//接收客户端的连接请求,sockServ.Accept(sockRecv);CSockFile*file;file=newCSockFile(&sockRecv);〃创建文件对象并关联到连接套接字对象。CSockFile*file;file=newCSockFile(&sockRecv);〃创建文件对象并关联到连接套接字对象。CArchive*arIn,arOut;arIn=CArchive(&file,CArchive::load);//创建用于输入的归档对象,arOut=CArchive(&file,CArchive::store);//创建用于输出的归档对象。〃归档对象必须关联到文件对象。arIn>>dwValue;adOut<<dwValue;sockRecv.Close();sockServ.Close();2.客户端(1)(2)(3)(4)//进行数据输入。//进行数据输出。输入或输出可以反复进行。//传输完毕,关闭套接字对象。//创建空的客户机端套接字对象。//创建套接字对象的底层套接字。CSocketsockClient;sockClient.Create();sockClient.Connect(strAddr,nPort);//请求连接到服务器。CSockFile*file;file=newCSockFile(&sockClent); 〃创建文件对象,并关联到套接字对象。CArchive*arIn,arOut;arIn=CArchive(&file,CArchive::load);//创建用于输入的归档对象,arOut=CArchive(&file,CArchive::store);//创建用于输出的归档对象。//归档对象必须关联到文件对象。//进行数据输入。//进行数据输出。输入或输出可以反复进行。//传输完毕,关闭套接字对象。//进行数据输入。//进行数据输出。输入或输出可以反复进行。//传输完毕,关闭套接字对象。adOut<<dwValue;sockClient.Close();多线程:一个进程可以包含若干个线程,同时执行进程地址空间中的代码。在Windows操作系统中,线程是指系统中最小的功能执行单元,其可以独立的完成某一项功能。在Windows操作系统中,所有程序的功能都是由每个程序中的多个线程共同完成。从某种特定的意义上而言,线程才是是计算机真正意义上的功能执行者。而从线程执行的数目而言,线程可以分为单线程和多线程。其中,多线程是由多个单线程组成。如果从线程的执行效率而言,多线程较单线程的执行效率高很多。那么用户在编程时,使用多线程技术可以提高程序的执行效率。同步方法:线程同步是指同一进程中的多个线程互相协调工作达到一致性。当用户编写程序时,有时会使用多个代码段同时读取或修改相同地址空间中的共享数据。此时,在操作系统中,可能会出现一个代码段在读取数据,而另一个代码段却正在修改数据。这样的情况会导致程序发生读写错误,造成程序异常退出。用户为了避免出现类似情况,需要使用到线程同步技术。即当一个线程程序对资源进行读写时,其他的线程程序则处于等待状态。(重点)多线程同步方法:临界区对象、互斥对象、事件对象FTP具有以下特点:文件传送协议只提供文件传送的一些基本的服务,它是面向连接的服务,使用TCP作为传输协议,以提供可靠的运输服务。FTP的主要作用是在不同计算机系统间传送文件,它与这两台计算机所处的位置、连接的方式以及使用的操作系统无关。FTP使用客户/服务器方式。FTP工作过程Standard模式:FTP客户端首先向FTP服务器的TCP21端口发起连接请求,建立起控制连接。当客户端需要传送数据的时候需要向控制连接发送“PORT"命令,PORT命令中包含了客户端接受数据的端口号。在传送数据的时候,服务器端通过自己的TCP20端口连接至客户端的制定端口来发送数据。Passive模式:同上,但是建立连接后发送的是“PASV,命令,在FTP服务器收到此命令后,随机打开一个高段端口(大于1024)并且通知客户端向这个端口发送请求。客户端通过此端口建立数据连接并传送数据。FTP命令&义LIST发送当前工作日流下的文件含列表到客户瑚PWD显示服而器的当X1U1作H录名RETR从服务KS下我一个丈什5TOR匕株文本文件到服扮器,切上史件存在金裱箱盖fTQU上传文奉文件到服务器,但不会上淌已经存在的文件STRUMODE设牡玄件的结构指定数据的传输模式ABORT通知服务器关闭逑接HTTP协议的主要特点是一个基于请求与响应模式的、无状态的、应用层的协议,简单快速、灵活、无连接、支
持客户/服务器模式HTTP协议通信过程1、 URL自动解析2、 获取IP地址,建立TCP连接3、 浏览器向服务器发出HTTP请求例:GET/HTTP/1.14、 Web服务器响应,并向浏览器发送数据例:HTTP/1.1200OK5、 浏览器解析数据6、 关闭TCP连接HTTP请求流程:HTTP1.0如图服务器津立连接服务器发出请求信息发出响应信息客户机关闭连接客户机HTTP1.1可以再一次连接中处理多个请求,并且多请求可以重叠进行,不需要等待一个请求结束后在发送下一个请求(步骤:建立连接、发出第1次连接,发出第N次连接,回送第1次响应,会送第N次响应,发出关闭连接请求,关闭连接)P233页1、 起始行主要命令GETPOSTHEADPUTDELETETRACECONNECTOPTIONS2、 请求头主要命令:Accept(-Charset,-Encoding,-Language)ConnectionContent-LengthRangeHostPragmaRefererUser-AgentUA-…3、 响应头主要命令LocationDateAllowContent(-Encoding-Length-Range-Type)ExpiresLast-Modified邮件:工作过程1、 发送邮件到服务器程序,称为发送邮件客户端程序2、 负责在网络上将邮件传送到信箱的程序,称为SMTP服务器程序3、 接收、存储邮件并提供用户提取的服务器程序,称为POP3服务器程序4、 从POP3服务器上收取邮件的程序,称为接收邮件客户端程序电子邮件标准格式:RFC822信件结构:信头+空白行+信体
SMTP:简单邮件传送协议1.SMTP的最大特点:简单、直观只规定发送程序和接收程序之间的命令和应答命令和响应都是可读的ASCII字符串主要功能:用于提交和传送电子邮件;:,■■:<MAILFROM:C食送者电子邮件地址>RCPTTO: F巴二: ■:J.VIARSETNQOP顷;IT引始开始一个用递如理,JL廿邮件一送者指出邮件接收者接收程DATA泠学启程的数据作为剧件内容旬匚;|;.a、.CR><LF>.<CR>出现中止刍中的邮件处理结束会诵2、SMTP响应命令描述220域服务推备好221系统状态或系统帮助应答250请求的命令成功完成354可以发送邮件内容500语法错误,命令不能识别502命令未实现550邮箱不可用3、发送步骤1) 打开邮件发送的对话2) 指定发送者的邮箱3) 指定接收者的邮箱4) 发送邮件的内容5) 结束邮件发送对话接收电子邮件的一般步骤首先利用Winsock连接上POP3服务器,然后:使用U
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2026学年八年级上学期语文期末压轴卷含答案
- 深度解析(2026)《GBT 25906.5-2010信息技术 通 用多八位编码字符集 锡伯文、满文名义字符、显现字符与合体字 48点阵字型 第5部分:奏折体》
- 2025内蒙古呼伦贝尔市阿荣旗教育事业发展中心遴选教研员4人考试参考试题及答案解析
- 深度解析(2026)《GBT 25915.2-2021洁净室及相关受控环境 第2部分:洁净室空气粒子浓度的监测》
- 2026江苏苏州健雄职业技术学院博士高层次人才需求35人备考考试试题及答案解析
- 深度解析(2026)《GBT 25769-2010滚动轴承 径向游隙的测量方法》(2026年)深度解析
- 2025广西百色市西林县民族高级中学招聘后勤工作人员1人模拟笔试试题及答案解析
- 2025贵州六枝特区公共汽车运输公司面向社会招聘驾驶员16人备考笔试题库及答案解析
- 2025年昆明市禄劝县人力资源和社会保障局公益性岗位招聘(5人)考试备考题库及答案解析
- 2025浙江杭州市西湖区西溪街道办事处招聘5人参考笔试题库附答案解析
- 消防维保应急预案及措施
- 运营管理知识培训课件
- 港口岸电系统投资运营协议
- 2025年中国玄武岩纤维制品行业市场分析及投资价值评估前景预测报告
- 钢结构厂房水电安装施工组织方案
- GB/T 16997-2025胶粘剂主要破坏类型的表示法
- 亚马逊运营年度述职报告
- 甘肃省庆阳市宁县2024-2025学年一年级上学期期末学业水平检测语文试卷
- 煤矸石填沟造地综合利用项目技术方案
- 公交车站设施维护管理规范
- 2025至2030中国淡竹叶行业发展分析及产业运行态势及投资规划深度研究报告
评论
0/150
提交评论