计算机网络常见问题

1、TCP与UDP的区别

TCP---传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。

UDP---用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证它们能到达目的地。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,且没有超时重发等机制,故而传输速度很快

使用TCP的应用:DNS、FTP、SMTP、SSH、TELNET、HTTP、POP3

使用UDP的应用:DNS、TFTP、RIP、DHCP、SNMP、NFS

2、ICMP协议?

答:ICMP是Internet Control Message Protocol,因特网控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由器是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。ICMP报文有两种:差错报告报文和询问报文。

3、请问交换机和路由器分别的实现原理是什么?分别在哪个层次上面实现的?

答:交换机用于局域网,利用主机的MAC地址进行数据传输,而不需要关心IP数据包中的IP地址,它工作于数据链路层。路由器通过IP数据包的IP地址进行路由的(将数据包递交给哪个下一跳路由器)。路由器工作于网络层。

4、TCP的三次握手与四次挥手

三次握手的原因:

为什么建立连接协议是三次握手,而关闭连接却是四次握手呢?

这是因为服务端的LISTEN状态下的SOCKET当收到SYN报文的建连请求后,它可以把ACK和SYN(ACK起
应答作用,而SYN起同步作用)放在一个报文里来发送。但关闭连接时,当收到对方的FIN报文通知时,它仅仅表示对方没有数据发送给你了;但未必你所有的数据都全部发送给对方了,所以你可以未必会马上会关闭SOCKET,也即你可能还需要发送一些数据给对方之后,再发送FIN报文给对方来表示你同意现在可以关闭连接了,所以它这里的ACK报文
和FIN报文多数情况下都是分开发送的。

为什么TIME_WAIT状态还需要等2MSL后才能返回到CLOSED状态?

为理解存在TIME_WAIT状态的第二个理由,我们假设在12.106.32.254的1500端口和206.168.112.219的21端口之间有一个TCP连接。我们关闭这个连接,过一段时间后在相同的IP地址和端口之间建立另一个连接,后一个连接称为前一个连接的化身,因为他们的IP地址和端口号都相同。TCP必须防止来自某个连接的老的重复分组在该连接已终止后再现,从而被误解为属于同一个连接的某个新化身。为做到这一点,TCP将不给处于TIME_WAIT状态的连接发起新的化身,既然TIME_WAIT状态的持续时间是2MSL,这就足以让某个方向上的分组最多存活MSL秒即被丢弃,另一个方向上的应答最多存活MSL秒也被丢弃。通过实施这个规则,我们就能保证每成功建立一个TCP连接时,来自该连接先前化身的老的分组都已在网络中消失了

网络编程中,如何通过设置,使得主动关闭连接的一方不经过TIME_WAIT状态,例如,如何使服务器在2MSL期间重新启动并使用原来的IP和端口?

可以使用setsockopt系统调用为该socket设置SO_REUSEADDR选项;socket可重用.这个套接字选项通知内核,如果端口忙,但TCP状态位于
TIME_WAIT ,可以重用端口。如果你的服务程序停止后想立即重启,而新套接字依旧使用同一端口,此时 SO_REUSEADDR 选项非常有用

5、电路交换、报文交换和分组交换的比较?   

答:电路交换:公共电话网(PSTN网)和移动网(包括GSM和CDMA网)采用的都是电路交换技术,它的基本特点是采用面向连接的方式,在双方进行通信之前,需要为通信双方分配一条具有固定宽带的通信电路,通信双方在通信过程中一直占用所分配的资源,直到通信结束。这种方式的优点是在通信过程中可以保证为用户提供足够的带宽,并且实时性强,时延小,交换设备成本低,但同时带来的缺点是网络带宽利用率不高,一旦电路被建立不管通信双方是否处于通话状态分配的电路一直被占用。连接建立——数据传输——释放链接

报文交换:报文交换和分组交换类似,也采用存储转发机制,但报文交换是以报文作为传送单元,由于报文长度差异很大,长报文可能导致很大的时延,并且对每个节点来说缓冲区的分配也比较困难,为了满足各种长度报文的需要并且达到高效的目的,节点需要分配不同大小的缓冲区,否则就有可能造成数据传送的失败。

分组交换:电路交换技术主要适用于传送话音相关的业务,这种网络交换方式对于数据业务而言,有着很大的局限性。首先是数据通信具有较强的突发性,峰值比特率和平均比特率相差较大,如果采用电路交换技术,若按峰值比特率分配,则电路带宽会造成资源的极大浪费,如果按平均比特率分配带宽,则会造成数据的大量丢失,其次是和语音业务比较,数据业务对时延没有严格的要求,但是需要进行无差错的传输,而语音信号可以有一定程序的失真但实时性要高。分组交换技术就是针对数据通信业务的特点而提出的一种交换方式,它的基本特点是面向无连接而采用存储转发的方式,将需要传送的数据按照一定长度分割成许多小段数据,并在数据之前增加相应的用于对数据进行选路和校验等功能的头部字段,作为数据传送的基本单元,即分组。采用分组交换技术,在通信之前不需要建立连接,每个节点首先将前一节点送来的分组收下并保存在缓冲区中,然后根据分组头部中的地址信息选择适当的链路将其发送至下一个节点,这样在通信过程中可以根据用户的要求和网络的能力来动态分配带宽。分组交换比电路交换的电路利用率高,但时延较大。分组转发的带来的问题:带来排队时延以及增加头部带来的开销。

6、select 和 epoll系统调用的区别

从支持的文件描述符的个数、使用方法、需不需要反复添加到内核、获得活跃描述符的方法、是否支持ET模式等方面比较

时间: 2024-11-16 09:37:24

计算机网络常见问题的相关文章

【总结】计算机网络常见问题

1.TCP/IP协议与OSI协议 ??相互通信的两个计算机系统必须高度协调工作才行,而这种"协调"是相当复杂的. "分层"可将庞大而复杂的问题,转化为若干较小的局部问题,而这些较小的局部问题就比较易于研究和处理. ??计算机网络采用了分层的体系结构,有两种国际标准,国际标准化组织ISO提出的开放系统互连参考模型就是OSI,是规定的国际标准,它是一个七层协议的体系结构. ??虽然是由ISO提出的国际标准,但是OSI在市场方面失败了,原因在于层次划分过多,有些层的功能重

计算机网络知识总结

一 OSI与TCP/IP各层的结构与功能,都有哪些协议 OSI的七层体系结构概念清楚,理论也很完整,但是它比较复杂而且不实用.在这里顺带提一下之前一直被一些大公司甚至一些国家政府支持的OSI失败的原因: OSI的专家缺乏实际经验,他们在完成OSI标准时缺乏商业驱动力 OSI的协议实现起来过分复杂,而且运行效率很低 OSI制定标准的周期太长,因而使得按OSI标准生产的设备无法及时进入市场(20世纪90年代初期,虽然整套的OSI国际标准都已经制定出来,但基于TCP/IP的互联网已经抢先在全球相当大的

常见问题:计算机网络/完整HTTP访问

域名解析 以浏览器进行HTTP访问为例,首先搜索自身DNS缓存(一般缓存1000条左右,仅缓存1分钟),若有且未过期,结束. 若未找到,则搜索操作系统的DNS缓存. 若未找到,尝试读取hosts文件. 若未找到,发起向本地首选DNS服务商.DNS服务商优先找自身缓存,未找到,则找根域名的ip(如com),根域名再逐级查找(如cnblogs.com),直到找到. 与服务器建立连接 整体流程简述 发送方:应用层(HTTP)-传输层(TCP)-网络层(IP)-链路层 HTTP协议: 生成对目标服务器目

[专业名词·硬件] 2、DC\DC、LDO电源稳压基本常识(包含基本原理、高效率模块设计、常见问题、基于nRF51822电源管理模块分析等)·长文

综述先看这里 第一节的1.1简单介绍了DC/DC是什么: 第二节是关于DC/DC的常见的疑问答疑,非常实用: 第三节是针对nRF51822这款芯片电源管理部分的DC/DC.LDO.1.8的详细分析,对于研究51822的人很有帮助: 第四节是对DC/DC的系统性介绍,非常全面: 第五节讲稳压电路的,没太多东西,可以跳过: 第六节讲LDO的,包含LDO和DC/DC的选型建议.LDO电容的选择等,很好: 第七八两节从专业角度给出提高电源效率的建议(目前还用不到). 一.DC/DC转换器是什么意思 le

计算机网络自顶向下方法:第三章 运输层

先根据书中的复习题巩固一遍, 最后回答常见问题TCP三次握手和四次挥手, 如有错误, 欢迎指出~ 点击下面跳过复习题 TCP3次握手: 为什么需要初始序号? 为什么需要3次握手, 而不是两次握手 TCP4次挥手 ? 第二章: 运输层 3.1~3.3节 R1. 假定网络层提供了下列服务. 在源主机中的网络层接收最大长度1200字节和来自运输层的目的主机地址的报文段. 网络层则保证将该报文段交付给位于目的主机的运输层. 假定在目的主机上能够运行许多网络应用进程. a. 设计可能最简单的运输层协议,

PHP常见问题及解答

当作PHP学习时,总是会在baidu上查很多的例如开发环境的选择呀,PHP好不好呀!或者是不是转学JAVA,或是.NET等: 首先本人是从2010年下半年开始报名学的PHP(IN Guangzhou),每周一天学了近6个月左右,从最基础的HTML,CSS,DIV,JAVASCRIPT,AJAX,PHP,然后学二次开发:闲暇之余还开通了一个个人blog( PHP wordpress); 由于个人工作原因,这几年放了一段时间未动PHP了,今年开始又自学了.NET; ---目的就想业余做一份兼职,锻炼

微信JS-SDK说明文档及常见问题处理

概述 微信JS-SDK是微信公众平台面向网页开发者提供的基于微信内的网页开发工具包. 通过使用微信JS-SDK,网页开发者可借助微信高效地使用拍照.选图.语音.位置等手机系统的能力,同时可以直接使用微信分享.扫一扫.卡券.支付等微信特有的能力,为微信用户提供更优质的网页体验. 此文档面向网页开发者介绍微信JS-SDK如何使用及相关注意事项. 使用说明 在使用微信JS-SDK对应的JS接口前,需确保公众号已获得使用对应JS接口的权限,可登录微信公众平台进入“开发者中心”查看对应的接口权限. 注意:

计算机网络(一)——互联网层

计算机网络,顾名思义,是由若干链路组成的,这些链路结点可以是计算机,集线器,交换机或路由器等:网络和网络之间可以通过路由器进行互联,这就是互联网的由来,而因特网就是最大的互联网:网络的存在是将许多计算机连接在一起,而因特网的存在是将许多网络连接在一起:网络的主要功能是让不同的主机之间进行数据的通信,实现大范围的资源共享:计算机之间的数据通信是通过接口来实现的: 因特网的组成部分分为边缘部分和核心部分:边缘部分为网络中的各个主机组成,核心部分是由连接这些网络的路由器组成,为边缘部分的主机提供服务:

NHibernate常见问题及解决方法

NHibernate常见问题及解决方法 曾经学过NHibernate的,但是自从工作到现在快一年了却从未用到过,近来要巩固一下却发现忘记了许多,一个"in expected: <end-of-text> (possibly an invalid or unmapped class name was used in the query)."错误查了好半天终于查到了.这篇文章是我转载的NHibernate的常见错误... hbm.xmlNHibernate文件中版本号可能引起的