本地主机的字符串缓冲区太小是什么

套接字_百度百科
源IP地址和目的IP地址以及源端口号和目的端口号的组合称为套接字。其用于标识客户端请求的服务器和服务。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。
套接字分类
常用的TCP/IP协议的3种套接字类型如下所示。
流套接字(SOCK_STREAM):
流套接字用于提供面向连接、可靠的数据传输服务。该服务将保证数据能够实现无差错、无重复发送,并按顺序接收。流套接字之所以能够实现可靠的数据服务,原因在于其使用了传输控制协议,即TCP(The Transmission Control Protocol)协议。
数据包套接字(SOCK_DGRAM):
数据包套接字提供了一种的服务。该服务并不能保证数据传输的可靠性,数据有可能在传输过程中丢失或出现数据重复,且无法保证顺序地接收到数据。数据包套接字使用UDP(User Datagram Protocol)协议进行数据的传输。由于数据包套接字不能保证数据传输的可靠性,对于有可能出现的数据丢失情况,需要在程序中做相应的处理。
原始套接字(SOCK_RAW):
原始套接字(SOCKET_RAW)允许对较低层次的协议直接访问,比如IP、 ICMP协议,它常用于检验新的协议实现,或者访问现有服务中配置的新设备,因为RAW SOCKET可以自如地控制Windows下的多种协议,能够对网络底层的传输机制进行控制,所以可以应用原始套接字来操纵网络层和传输层应用。比如,我们可以通过RAW SOCKET来接收发向本机的ICMP、IGMP协议包,或者接收TCP/IP栈不能够处理的IP包,也可以用来发送一些自定包头或自定协议的IP包。网络监听技术很大程度上依赖于SOCKET_RAW
原始套接字与标准套接字(标准套接字指的是前面介绍的流套接字和数据包套接字)的区别在于:原始套接字可以读写没有处理的IP数据包,而流套接字只能读取TCP协议的数据,数据包套接字只能读取UDP协议的数据。因此,如果要访问其他协议发送数据必须使用原始套接字。
套接字简介
套接字,是支持的的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。
非常非常简单的举例说明下:Socket=Ip address+ TCP/UDP + port。
套接字连接方式
应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。
套接字主要参数
区分不同应用程序进程间的和连接,主要有3个参数:通信的目的IP地址、使用的协议(TCP或UDP)和使用的。Socket原意是 “插座”。通过将这3个参数结合起来,与一个“插座”Socket绑定,就可以和传输层通过套接字接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
Socket可以看成在两个程序进行通讯连接中的一个端点,是连接应用程序和网络的桥梁,Socket在应用程序中创建,通过绑定与网络驱动建立关系。此后,应用程序送给Socket的数据,由Socket交给网络驱动程序向网络上发送出去。计算机从网络上收到与该Socket绑定IP地址和相关的数据后,由网络驱动程序交给Socket,应用程序便可从该Socket中提取接收到的数据,网络应用程序就是这样通过Socket进行数据的发送与接收的。
套接字分类介绍
Host A上的程序A将一段信息写入Socket中,Socket的内容被Host A的网络管理软件访问,并将这段信息通过Host A的发送到Host B,Host B的网络接口卡接收到这段信息后,传送给Host B的网络管理软件,网络管理软件将这段信息保存在Host B的Socket中,然后程序B才能在Socket中阅读这段信息。
假设在网络中添加第三个主机Host C,那么Host A怎么知道信息被正确传送到Host B而不是被传送到Host C中了呢?基于TCP/IP网络中的每一个主机均被赋予了一个唯一的IP地址,IP地址是一个32位的,由于没有转变成二进制,因此通常以小数点分隔,如:198.163.227.6,正如所见IP地址均由四个部分组成,每个部分的范围都是0-255,以表示8位地址。
值得注意的是IP地址都是32位地址,这是IP协议版本4(简称Ipv4)规定的,目前由于IPv4地址已近耗尽,所以IPv6地址正逐渐代替Ipv4地址,Ipv6地址则是128位无符号整数。
假设第二个程序被加入的网络的Host B中,那么由Host A传来的信息如何能被正确的传给程序B而不是传给新加入的程序呢?这是因为每一个基于TCP/IP网络通讯的程序都被赋予了唯一的端口和,端口是一个信息,用于保留Socket中的输入/输出信息,端口号是一个16位无符号整数,范围是0-65535,以区别主机上的每一个程序(端口号就像房屋中的房间号),低于256的端口号保留给标准应用程序,比如pop3的端口号就是110,每一个套接字都组合进了IP地址、端口、端口号,这样形成的整体就可以区别每一个套接字。
套接字Sockets
流式套接字
本文描述流式套接字,它是两种可用的Sockets类型中的一种。(另一种类型是数据文报套接字 。)
流式套接字提供没有记录边界的数据流:可以是双向的(应用程序是全双工:可以通过套接字同时传输和接收)。可依赖流传递有序的、不重复的数据。(“有序”指数据包按发送顺序送达。“不重复”指一个特定的数据包只能获取一次。)这能确保收到流消息,而流非常适合处理大量数据。
网络可将数据拆分为分组或若干个大小适当的数据包。 CSocket 类将为您处理打包和。
流基于显式连接:套接字 A 请求与套接字 B 建立连接;套接字 B 接受或拒绝此连接请求。
打电话的情况与流非常相似:正常情况下,接听方听到您的话和您讲话时的顺序一样,没有重复和遗漏。流套接字适合 (FTP) 这类实现,此协议有利于传输任意大小的 ASCII 或。
如果必须保证数据送达而且数据大小很大时,流式套接字优于数据文报套接字。有关流式套接字的更多信息,请参见Sockets规范。该规范可在 Platform SDK 中获得。
MFC 示例 CHATTER 和 CHATSRVR 都使用流式套接字。这些示例可能已经设计为使用数据文报套接字向网络上的所有接收套接字广播。而目前的设计更好,这是因为:
广播模型受制于网络“洪水”(或“风暴”)问题。
后来采用的客户端-服务器模型更有效。
流式模型提供可靠的数据传输,数据文报模型则未提供。
最终模型利用在 CArchive 类借给 CSocket 类的 Unicode 和 ANSI 套接字应用程序之间通信的能力。
套接字注意
如果使用 CSocket 类,则必须使用流。如果将套接字类型指定为 SOCK_DGRAM ,则 MFC 断言失败
Sockets 示例列表
下列 MFC 示例程序阐释了Sockets功能:
CHATTER 是一个套接字客户端示例应用程序。它是一个具有拆分窗口的单文档界面 (SDI) 应用程序,允许用户将消息发送到讨论服务器 (CHATSRVR),讨论服务器然后将消息同时发送给其他多个 CHATTER 用户。
通过使 CHATTER 应用程序向服务器发送广播数据文报包而不是消息流,可以在不使用客户端/服务器模型的情况下编写 CHATTER 和 CHATSRVR。然而,与流式套接字不同,数据文报套接字不能保证一定会被传送;因此,一些消息可能不会到达讨论中的所有其他用户。
套接字运行示例
生成并运行 CHATTER 示例
打开解决方案 chatter.sln。
在“生成”菜单上单击“生成”。
在“调试”菜单上单击“开始执行(不调试)”。
运行 CHATTER 时,有一个“Setup”对话框请求输入以下内容:
用来所有消息的名称。例如,可以选择“”。发送的所有消息的前面都会自动加上名称“”。
运行 CHATSVR 示例的计算机的 IP 地址。
标识要加入的讨论的数字(一台计算机可以运行多个讨论服务器)。
提供了所有这些信息并单击“OK”后,主应用程序窗口随即出现。若要发送消息,请在下部窗格中键入消息。按 ENTER 键发送消息。若要发送多行消息,请按 CTRL+ENTER 键。关键字
套接字示例
此示例说明了以下:
AfxGetApp、AfxMessageBox、CArchive::Flush、CArchive::IsStoring、CControlBar::EnableDocking、CControlBar::GetBarStyle、CControlBar::SetBarStyle、CDialog::DoModal、CDocument::DeleteContents、CDocument::、CDocument::、CDocument::OnNewDocument、CEditView::GetEditCtrl、CEditView::SerializeRaw、CFrameWnd::DockControlBar、CFrameWnd::EnableDocking、CFrameWnd::OnCreateClient、CFrameWnd::SetActiveView、CObject::AssertValid、CObject::Dump、CObject::IsKindOf、CObject::Serialize、CRect::Size、CSplitterWnd::CreateView、CSplitterWnd::GetPane、CStatusBar::Create、CStatusBar::、CString::GetBuffer、CString::、CString::IsEmpty、CString::LoadString、CString::ReleaseBuffer、CToolBar::Create、CToolBar::LoadBitmap、CToolBar::、CView::GetDocument、CView::OnDraw、CWinApp::、CWinApp::InitInstance、CWinApp::、CWinApp::OnFileNew、CWnd::DestroyWindow、CWnd::DoDataExchange、CWnd::GetClientRect、CWnd::GetWindowText、CWnd::、CWnd::、CWnd::OnChar、CWnd::OnCreate、CWnd::OnTimer、CWnd::PreCreateWindow、CWnd::SetTimer、CWnd::SetWindowText、SetWindowText、rand、wsprintf
注意一些示例(如此示例)尚未经过修改以反映
向导、库和的变化,但仍说明了如何完成所需的任务。
CHATSRVR 是套接字服务器示例应用程序,它是一个单文档界面 (SDI) 应用程序,用于为 CHATTER 示例的客户端实现讨论服务器。
通过使 CHATTER 应用程序向服务器发送广播数据文报包而不是消息流,可以在不使用客户端/服务器模型的情况下编写 CHATTER和 CHATSRVR。然而,与流式套接字不同,数据文报套接字不能保证一定会被传送;因此,一些消息可能不会到达讨论中的所有其他用户。生成并运行示例
生成并运行 CHATSRVR 示例
打开解决方案 chatsrvr.sln。
在“生成”菜单上单击“生成”。
在“调试”菜单上单击“开始执行(不调试)”。
运行 CHATSRVR 时会显示一个请求输入“Channel”的“Discussion”对话框。“Channel”是标识要支持的讨论的数字(一台计算机可以运行多个讨论服务器)。提供了此信息并单击“OK”后,主应用程序窗口随即出现。关键字
套接字关键字
AfxMessageBox、CArchive::Flush、CArchive::IsStoring、CCmdUI::Enable、CCmdUI::SetText、CControlBar::EnableDocking、CControlBar::GetBarStyle、CControlBar::SetBarStyle、CDialog::DoModal、CDocument::DeleteContents、CDocument::OnNewDocument、CEditView::GetEditCtrl、CFrameWnd::DockControlBar、CFrameWnd::EnableDocking、CObject::AssertValid、CObject::Dump、CObject::Serialize、CStatusBar::Create、CStatusBar::SetIndicators、CString::GetBuffer、CString::LoadString、CString::ReleaseBuffer、CToolBar::Create、CToolBar::LoadBitmap、CToolBar::SetButtons、CView::GetDocument、CView::OnDraw、CWinApp::AddDocTemplate、CWinApp::ExitInstance、CWinApp::InitInstance、CWinApp::LoadStdProfileSettings、CWinApp::OnFileNew、CWnd::DoDataExchange、CWnd::GetWindowTextLength、CWnd::OnCreate、SetWindowText、wsprintf
注意 一些示例(如此示例)尚未经过修改以反映 Visual C++ 向导、库和的变化,但仍说明了如何完成所需的任务。
套接字通信
要通过Internet进行通信,至少需要一对套接字,其中一个运行在客户端,称之为ClientSocket,另一个运行于服务器端面,称为ServerSocket。根据连接启动的方式以及本地要连接的目标,套接字之间的连接过程可以分为三个步骤:服务器监听、客户端请求、连接确认。
服务器监听是指服务端套接字并不定位具体的客户端套接字,而是处于等待连接的状态,实时监控网络状态。
客户端请求是由客户端的套接字提出连接请求,要连接的目标是服务器端套接字。为此,客户端的套接字必须首先描述它要连接的服务器的套接字,指出服务器套接字的地址和,然后再向服务器端套接字提出连接请求。
连接确认是当服务器端套接字监听到或者说接收到客户端套接字的连接请求时,它就响应客户端套接字的请求,建立一个新的线程,把服务器端套接字的信息发送给客户端,一旦客户端确认了此连接,连接即可建立。而服务器端继续处于,继续接收其他客户端的连接请求。
使用套接字进行数据处理有两种基本模式:同步和异步。
同步模式:
同步模式的特点是在通过Socket进行连接、接收、发送数据时,客户机和服务器在接收到对方响应前会处于阻塞状态,即一直等到收到对方请求才继续执行下面的语句。可见,同步模式只适用于数据处理不太多的场合。当程序执行的任务很多时,长时间的等待可能会让用户无法忍受。
异步模式:
异步模式的特点是在通过Socket进行连接、接收、发送操作时,客户机或服务器不会处于阻塞方式,而是利用callback机制进行连接、接收、发送处理,这样就可以在调用发送或接收的方法后直接返回,并继续执行下面的程序。可见,异步套接字特别适用于进行大量数据处理的场合。
使用同步套接字进行编程比较简单,而异步套接字编程则比较复杂。
企业信用信息网络课件第10章_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
网络课件第10章
上传于||文档简介
&&网​络​课​件
大小:1.71MB
登录百度文库,专享文档复制特权,财富值每天免费拿!
你可能喜欢博客访问: 144413
博文数量: 123
博客积分: 2825
博客等级: 少校
技术积分: 795
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
分类: BSD
  1、简要说明TCP/IP传输层的作用。它主要包含哪两个协议?它们的主要特点是什么?  解答:  TCP/IP传输层为应用进程提供一条端到端的逻辑信道,为应用进程提供数据传输服务。传输层的一个重要目的是进一步加强底层网络的数据传输服务,传输层在不可靠的IP服务基础上,提高传输的可靠性。  TCP/IP传输层有两个并列的协议,传输控制协议(TCP)和用户数据报协议(UDP)。一般,TCP和UDP共存于互联网的传输层。  TCP使用IP提供面向连接的可靠的传输服务。TCP在传输前要建立连接。一般TCP用于一次传输要交换大量报文的情形。为了提供可靠的传输服务,TCP采取了诸多措施,如差错控制、流量控制和拥塞控制等。  UDP使用IP提供无连接的不可靠但效率高的传输服务。UDP比TCP简单得多。UDP适用于一次传输少量信息的情况。它的可靠性由上层的应用程序提供。UDP的价值在于其效率高,当底层通信子网相当可靠时,就更为适宜。  2、简述协议端口及其作用。有哪两类协议端口?它们如何分配和管理?  解答:  和OSI类比,协议端口(简称端口)相当于传输层与上面应用层接口处的服务访问点TSAP。端口是一种抽象的软件结构,包括一些数据结构和输入、输出缓冲队列,容纳传输层和该端口所对应的应用程序之间交换的数据。为了标识不同的端口,每个端口都拥有一个叫做端口号的整数标识符。  TCP/UDP使用端口与上层的应用进程交互,端口标识了应用层中不同的进程。传输层的TCP/UDP要和应用层的多个进程交互,通过端口机制提供了复用和解复用的功能。  TCP/UDP将端口分为两大类:一类是保留端口,一类是自由端口。周知端口也称保留端口,以全局方式进行统一分配,并公之于众。保留端口保留给服务器进程使用,每一种标准的服务器都分配有一个全局公认的端口号,号码为0~1023的端口才能作为保留端口,由Internet名字和号码分配公司ICANN管理。自由端口以本地方式进行分配,用户可自由使用。当某一进程与远地的进程通信之前,首先要在本地申请一个自由端口,然后使用周知端口与远地服务器进行通信。号码为1024及以上的端口都能作为保留端口。  3、UDP用户数据报报头共几个字节?哪几个字段?为什么不包含目的地址和源地址?  解答:  UDP用户数据报格式非常简单,报头只有8个字节,包含4个字段:   源端口:发送端UDP端口,当不需要返回数据时,该域为0;   目的端口:接收端UDP端口;   长度:UDP数据报总长度,以字节为单位,最小值为8(报头长);   校验和:UDP校验和是一个可选域,如果此域为“0”就表示不计算校验和。  UDP数据报中不指定源站和目的站的IP地址,因为传输层只需识别端口,不用识别主机,识别主机的任务由网际层完成。  4、UDP用户数据报的伪报头的作用是什么?为什么称为伪报头?UDP提供了什么样的可靠性措施?  解答:  伪报头是UDP计算校验和使用的,计算校验和时,除UDP用户数据报本身进行计算外,伪报头也参与计算,它补充了目的站IP地址和源站IP地址。伪报头参与校验和的计算是为了验证UDP数据报是否传到正确的目的地(IP地址加端口号)。  伪报头并不是UDP数据报的有效成分,只是计算校验和临时与UDP用户数据报组合在一起,校验和计算之后就丢弃,并不被传送,所以称为伪报头。  UDP校验和是UDP提供的传输可靠性的唯一手段,而且它还是可选的。当选择进行UDP校验和计算时,若校验和出现差错,UDP也没有超时重传等差错控制机制,而只是交与上层处理。另外,UDP是无连接的,也没有流量控制和拥塞控制等可靠性措施。  5、什么是TCP的数据流和报文段?TCP对什么进行编号?TCP采用什么确认的方式?TCP的确认序号是什么意思?  解答:  TCP的数据流,指的是字节的无结构的序列,TCP提供的是面向连接的可靠的流传输。为了便于每次的传输,又把数据流划分为若干个段,称为报文段,每个报文段作为TCP的协议数据单元PDU封装到一个IP数据报中在网上传输,报文段到达目的地后,TCP再将它们组装为原来的数据流。  TCP对数据流按字节编上序号,而不是按报文段编序号。TCP将传输的报文段所携带数据的第一个字节的序号放在报文段首部的序号字段中。  TCP采用累计确认方式,收方确认已正确收到的、积累的连续数据流。在确认报文段首部的确认序号字段中,收方写入的确认序号比正确收到的字节序号的最高序号多1,表明了它前面的数据流已正确收到,指示了所期望接收的下一个报文段的起始序号。  6、设TCP的最大报文段生存时间MSL分别为120s和60s,均使用32比特的序号空间。问:同一TCP连接中在MSL内不出现相同序号的最大信息传输速率分别是多少?TCP采取什么措施避免同一连接上在MSL内出现相同的序号。  解答:  32比特的序号的空是,序号循环一周要发送2^32个字节,若TCP的最大报文段生存时间MSL为120s,则同一TCP连接上在MSL内不出现相同序号的最大信息传输速率是:(2^32×8)b/120s=286Mb/s。  同样方法可得:若TCP的最大报文段生存时间MSL为60s,则同一TCP连接中在MSL内不出现相同序号的最大信息传输速率是572Mb/s。  序号空间不变时,数据传输速度越高序号循环一周的时间越小,就可能小于TCP规定的MSL。为了同一TCP连接上在MSL内不产生相同的序号,TCP使用时间戳选项,发方TCP在每个发送的报文段首部插入32比特的时间戳,收方将收到的时间戳也插入到ACK报文段中作为确认。这样,32比特的时间戳和32比特的序号组合在一起就可以避免序号循环产生的问题。  7、理论上光纤可以达到75Tb/s的信息传输速率,如果TCP的最大报文段生存时间MSL仍取120s,问:为避免出现相同序号的问题而扩大序号空间,TCP应该使用至少多少的比特的序号空间?对于光纤的这一速率,如果仍使用32比特的序号空间,MSL最大有多大?  解答:  由(2^n×8)b/120s=75Tb/s,得2^n=1.125×10^12,n约等于40,为避免出现相同序号的问题,TCP应该使用至少40比特的序号空间。  如果仍使用32比特的序号空间,MSL最大只有(2^32×8)b/75Tb/s=0.46s  8、在TCP连接上,主机的发送窗口64k字节,线路的往返时间是50ms,问:  (1) 主机能达到的最大信息传输速率是多少?  (2) 若在此线路上使用窗口比例因子选项实现155Mb/s的信息传输速率,窗口比例因子至少应该选多大?扩展后的窗口可达多少字节?  解答:  在TCP连接上,发方只有经过一个往返时间RTT才能发出数据并收到确认,之后才能向前滑动发送窗口并继续发送;又因为主机的发送窗口最大值为64K字节,因此TCP最多只能在RTT时间内发送64K字节的数据,能达到的最大信息传输速率是:(65536×8)b/50ms=10.5Mb/s。  若在此线路上使用窗口比例因子选项实现155Mb/s的信息传输速率,设窗口比例因子为n,则:  (65536×2^n×8)b/50ms>=155Mb/s,因此2^n>=14.8,取窗口比例因子n=4。扩展后的窗口可达:64K×2^4=1024K字节。  9、通告窗口设置于何处?它表示什么意思?它反映了什么信息?在TCP起流量控制中它起什么作用?  解答:  通告窗口设置于收方报文段的窗口字段,单位为字节。通告窗口告诉发方:在收到收方的下一次确认之前,发方能够发送的数据的长度不能超过此窗口的大小。如果通告窗口为n,则发方能够发送的数据流是从确认序号开始的n个字节。  通告窗口实际上反映了收方目前可用的接收缓冲区的大小,即它的接收能力。  通告窗口在TCP流量控制中反馈了收方当前的接收能力,发方根据通告窗口反馈的值调节自己的发送窗口的大小,从而实现流量控制。  10、在TCP连接上,主机A向主机B传输1100字节的数据,双方TCP协商的MSS为300字节,主机B通告的窗口WIS为1200字节,又设主机A和B的初始序号ISN分别为,试画出主机A和主机B建立连接——传输数据(A→B)——关闭连接的全过程示意图,图中标明根据协议参数。  解答:    11、什么是C/S模式?什么是B/S模式?为什么采用C/S模式作为互联网应用程序间相互作用的最主要形式?  解答:  C/S模式即客户-服务器模式,客户(client)和服务器(server)分别是两个应用进程,可以位于互联网的两台不同主机上。服务器被动地等待服务请求,客户向服务器主动发出服务请求,服务器做出响应,并返回服务结果给客户,这就是C/S模式。  B/S模式即浏览器-服务器模式,是一种基于Web的C/S模式。B/S模式中,客户是浏览器,服务器是Web服务器。客户向服务器发出信息浏览请求,服务器向客户发回客户所需的万维网文档,以页面的形式显示在客户的屏幕上。B/S模式的一个重要特点是平台无关性,Browser、Web Server及主流语言Java和HTML等都可以做到与软硬件平台无关。另外,B/S模式的客户端变瘦,其功能主要是一个多媒体浏览器。  采用C/S模式作为互联网应用程序间相互作用的最主要形式的原因如下:   从技术方面讲,互联网上不同主机进程之间进行通信,其重要特点是主机发起通信完全是随机的。因此需要一种机制,能够适应这种随机性。C/S模式很好地解决了上述技术问题,每次通信过程都由客户进程主动发起,而且是随机的,服务器进程从开机起就处于等待状态,随时准备对客户的请求做出及时的响应。   从实际应用方面讲,C/S模式的重要特点是非对等性相互作用,客户请求服务,服务器提供服务。一般提供服务的计算机要比请求服务的计算机拥有更好更多的硬、软件资源和更强的处理能力。C/S模式很好地适应了Internet上资源分布不均的客观现实。   C/S模式优化了网络计算,提高了网络的利用率。客户可以请求服务器进行大型计算,比如数据库查询等,客户接收用户的查询请求,形成查询报文传给服务器,服务器执行大型数据库的查询,之后将查询结果传回给客户,客户进行结果显示,提供友好的人机界面。因此,客户和服务器分工合作,协同完成计算,网络上传输的只是简短的查询请求和结果。  12、什么是域名?叙述Internet的域名结构。什么是域名系统DNS?  解答:  域名即主机名,它用来惟一地标识连在Internet上的主机,它采用层次结构,在应用层使用。  域名为层次结构,分为若干级,各级域名之间以小数点连接:…….三级域名.二级域名.顶级域名。每一级域名均由英文字母与阿拉伯数字组成,不超过63个字符,不区分字母大小写。各级域名自左向右级别越来越高,顶级域名TLD在最右边。一个完整的域名总字符数目不能超过255个。域名系统不规定一个域名必须包含多少个级别。这样,整个Internet层次结构的名字空间就构成一棵命名树,根结点是无名的,根下面就是顶级域结点。 DNS负责主机名和IP地址之间的转换,它是一个联机分布式数据库系统,采用客户-服务器模式。进行域名查询的机器称为域名解析器,需要时主动发起域名解析请求,域名服务器则随时准备作出响应。域名服务器的数据库中存放着它所管辖范围的主机名和IP地址之间的映射表,域名服务器之间又可以相互联络和协作,以便分布在Internet各个域名服务器数据库中的域名都能被有效地搜索。  13、叙述域名服务器系统的组织方式。  解答:  域名服务器系统基本上是按照域名的层次进行组织的,但域名器系统的层次并不与域名系统的层次严格对应。  Internet允许根据具体情况将某一域名空间划分为一个或多个域名服务器管辖区,在每个管辖区设置相应的授权域名服务器。管辖区内的主机必须在授权域名服务器处注册登记,授权域名服务器的DNS数据库中记录了辖区内主机的域名和IP地址的映射表,负责对本管辖区内的主机进行域名解析工作。  有两种授权域名服务器有特殊的名称。一种是本地域名服务器或默认域名服务器。对每个管辖区内的所有主机来说,该管辖区内的授权域名服务器称为本地域名服务器,辖区内的所有主机都知道它的IP地址。另一种是根域名服务器,是负责顶级域的授权域名服务器。  分散在世界各地的域名服务器形成了一个联合协作的系统,需要时域名服务器之间可以协作完成解析,为此,每个域名服务器都知道所有的根域名服务器的IP地址,根域名服务器知道其下属的二级域名服务器的IP地址,每个域名服务器又知道其下一级域名服务器的IP地址。  14、描述域名解析方式。  解答:  域名解析分为两步进行:  第一步:访问本地域名服务器。当某一应用需要将主机名映射为IP地址时,该应用使用域名解析器,首先请求本地域名服务器进行解析。本地域名服务器查找DNS数据库,如果能找到对应的IP地址,就放在应答报文中返回。如果本地域名服务器中不包含该域名和IP地址的映射,则需转入第二步;  第二步:访问非本地的其他域名服务器。先访问顶级域名对应的根服务器,根服务器不能解析时,再请求其下一级服务器,下一级服务器不能解析时,再请求下下一级服务器,……,如此进行一次自顶向下的搜索,最后找到其授权域名服务器,实现域名解析。  其中第二步域名解析又有两种方式,第一种方式称为递归解析,此时,域名服务器又是解析器,它不能解析时,就变为解析器请求其他域名服务器解析,如此递归,直至得到解析结果。第二种方式称为反复解析,由客户自己每次请求一个服务器,服务器不能解析则返回下一个服务器的IP地址给客户,客户反复进行解析,直至得到解析结果。  15、为提高域名解析的效率,DNS采取了什么措施?  解答:  为了提高域名解析的效率,域名解析中使用了域名缓存技术。域名缓存技术是在服务器中设置一个专用的内存缓冲区,用来存放近期解析过的域名及其对应的IP地址的映射。于是,在服务器域名解析过程中,如果在数据库中搜索不到相关记录,则可使用域名缓存进行解析,如果域名缓存也解析不到,再访问非本地的其他域名服务器。这显然提高了解析效率。  域名缓存机制不仅用于域名服务器,也用于主机。许多主机运行一种功能很强的解析器软件,系统启动时这种解析器软件从本地域名服务器获取一个完整的域名IP地址映射数据库的副本,并维护一个近期使用的域名IP地址映射的缓冲区,这样主机缓冲区中既有本地的域名映射也有非本地的部分域名映射。  16、主机名(域名)和计算机名有何不同?它们各来自什么体系?WINS的作用是什么?与DNS有何不同?  解答:  主机名和计算机名都用于标识网络中的一台计算机,但来自不同的规定,用于不同场合。主机名是Internet中使用的层次结构的名称,而计算机名是网络基本输入输出系统NetBIOS规范的名称,它是一个不超过15个字符长度的名称,没有层次结构。主机名和计算机名分别来自TCP/IP和Microsoft Windows两个最有影响的体系。  WINS用于Microsoft TCP/IP网络中计算机名到IP地址的解析,而DNS用于TCP/IP网络中主机名到IP地址的解析。  17、Telnet为用户提供什么应用服务?Telnet运行使用什么模式?Telnet采用什么样的服务器方案?  解答:  Telnet为用户提供访问远程系统的资源的服务,就像远地主机的本地用户一样使用这台主机的软、硬件资源。例如,远在异国就可以通过Telnet连接到华盛顿的国会图书馆,访问它的资源。  Telnet运行使用客户-服务器模式,在本地系统运行Telnet客户进程,而在远地主机则运行Telnet服务器进程。当用户在本地调用Telnet时,本地主机上的应用程序成为客户,Telnet客户通过操作系统内核的键盘驱动程序接收输入的信息并传送到远地的服务器,服务器发回的信息并显示在本地用户屏幕上。  Telnet的服务器方案是并发服务器,用主从服务器的方式解决并发请求的问题。先于客户启动的Telnet服务器用周知端口23监听并接收来自客户的TCP连接请求,每有一个来自客户的TCP连接请求,它就产生一个从服务器来处理这一连接,而原来的主服务器继续等待新的请求。  18、FTP为用户提供什么应用服务?什么是匿名FTP?FTP运行采用什么模式?  解答:  文件传输协议FTP为用户提供文件传输服务,通过网络进行文件的全文拷贝。  匿名FTP给用户提供了一种方便的访问方式,它是一种非严格访问控制,但服务器常常将匿名访问限制在某一个目录下的公共文件,如/usr/ftp,客户在支持匿名FTP的服务器上公共文件时,只需使用下述公开的帐号:登录名:anonymous,口令:guest,就可以与服务器建立会话。Guest是早期系统的匿名访问口令,如今许多FTP版本常常要求用户使用其电子邮件地址作为口令,这样,当发生问题时远程FTP程序可发送电子邮件通知用户。  FTP是基于客户-服务器模型而设计的,客户和服务器之间利用TCP连接传输信息。但与一般客户服务器模式有所不同的是,FTP的客户和服务器之间要建立双重连接,一个是控制连接,负责传输控制信息,一个是数据连接,负责传输文件。FTP服务器采用并发服务器方式,以满足多个客户的并发请求。  19、电子邮件系统中,用户代理(UA)和报文传送代理(MTA)的功能是什么?  解答:  UA包含一个在本地运行的用户接口,用户通过一个友好的接口来交付、读取和处理邮件,其主要功能如下:   发件撰写;给用户提供方便的编辑信件的环境;   收件显示:在计算机屏幕上显示来信内容,包括来信附上的声音和图像等;   收件处理:收信人应能根据情况按不同方式对来信进行处理,例如,删除、存盘、打印等;   交付和读取邮件:用户撰写好邮件后,UA使用SMTP将用户的邮件传送到它的邮件服务器。相反方向上,UA使用POP(或IMAP)从邮件服务器读取邮件到用户主机进行处理。  MTA运行在ISP的邮件服务器上,其主要功能如下:   邮件发送:接收本地用户发送的邮件,存于邮件缓存区待发,MTA定期(通常每30分钟)进行扫描并发送。如果到一定时间(比如几天)某个邮件仍发不出去,就将其从发送邮件缓存区删除,并通知发件人。   邮件接收:MTA接收发到本地用户的邮件,并将邮件存放在收信人的邮箱中。邮件发送和接收使用SMTP协议,另外,MTA还运行POP服务器协议,供用户随时读取邮箱中的邮件。可见,邮件服务器需要昼夜不停地运行,为用户转发和接收邮件。   邮件传输情况报告:将邮件传送的情况向发件人报告。  20、简述RFC822定义的电子邮件的格式,其信息使用什么编码?  解答:  电子邮件信息包括两个部分,中间用一个空行分隔。第一部分是一个首部,包括有关发送方、接收方、发送日期和信息格式等。第二部分是主体,包括信息主体的文本。  电子邮件首部保持标准形式。首部的每一行首先是一个关键字,接着是一个冒号,然后是附加的信息。有些关键字在电子邮件首部是必须的,另一些是可选的。每个首部必须包含以To开头的行,引出一个接收方的列表,可以包含一个或多个电子邮件地址。电子邮件的首部有一个以From开头的行,其后是发送方的电子邮件地址。以下列出主要的关键字。  To:接收方邮件地址;  From:发送方邮件地址;  Cc:发送副本的邮件地址  Date:发送的日期和时间;  Subject:邮件的主题;  X-Charset:使用的字符集;  Reply-To:回复邮件的地址。  RFC822电子邮件使用可打印的ASCII码。   21、操作系统包括哪两个层次?什么是应用程序编程接口(API)?它有哪两种实现方式?  解答:  操作系统包含内核和系统应用程序两个层次。系统启动后,内核总是常驻内存,它提供最基本的系统功能,比如设备驱动、进程调度、资源管理等。在内核之外是系统应用程序,包括外部命令、应用平台和软件开发环境等。  应用程序只有通过内核才能访问计算机的各种硬件资源。API是应用程序(包括用户自己开发的应用程序和系统应用程序)如何访问系统内核的接口。  API有两种实现方式:一种是系统内核的系统调用,另一种是以库函数方式,它在核外实现。在UNIX中用系统调用来实现,而在Windows中则用库函数来实现。  22、解析套接字(Socket)、Socket机制和套接字对。  解答:  套接字(Socket)的英文原意是孔、插口等,这里用来表示UNIX TCP/IP网络通信的接口,类似现实生活中的电话插口,提供了电话和电话网络之间的接口。  基于套接字概念形成了TCP/IP网络环境下应用程序之间通信的一套程序设计方法,一种TCP/IP网络通信API,称为Socket机制。  可以把套接字机制看成是网络环境下提供通信端口的UNIX文件访问机制的一般化。UNIX操作系统在文件读写之前调用open()时,系统返回一个文件描述字与某个文件或设备相关联,并用它作为读read()、写write()的参数来标识该文件或设备。套接字机制最早是由BSD UNIX引入的一种网络通信编程机制,这种机制继承了UNIX文件读写的思路。应用程序在进行网络读写时请求操作系统创建一个套接字,系统返回一个类似文件描述字的整数,可以称为Socket描述字,应用程序使用它标识创建的套接字,提供通信的端口。套接字机制的使用也和文件访问类似,一旦应用程序创建了一个套接字,并进行了地址绑定和外部地址的TCP连接,就可以利用Socket描述字作为参数使用write()在此连接上发送数据流,在连接的另一端则使用read()接收数据。  套接字对是表示TCP连接的两个端口听四元组:(本地IP地址,本地TCP端口号;远程IP地址,远程TCP端口号),通过Socket对连接了通信两端的应用程序。  23、什么是流套接字?什么是数据报套接字?  解答:  流套接字和数据报套接字是两种不同类型套接字,同一协议族可能提供多种不同的通信服务类型,创建Socket的应用程序使用不同类型套接字可以指定网络提供的通信服务类型。流套接字提供面向连接的数据流通信服务,数据报套接字提供无连接的数据报通信服务。TCP/IP协议族中,流套接字和数据报套接字分别对应TCP和UDP协议。  24、什么是套接字命名?套接字有了号,为什么还要命名?  解答:  套接字命名即是将本地Socket地址赋予Socket。本地Socket地址包括本地主机IP地址和本地端口号。  创建了一个Socket并有了Socket号,这个通信端口还不能使用,当它命名之后,将本地主机IP地址和本地端口号赋予它,它才能和特定主机上的特定的应用程序相关联,才能通过这个通信端口找到通信的端点。
阅读(1635) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。

我要回帖

更多关于 字符串缓冲区太小 的文章

 

随机推荐