应届生面试要点总结(7)网络相关

断开链接不一定就是客户端,谁都可以先发起断开指令,另外客户端和服务端是没有固定标准的,谁先发起请求谁就是客户端。

为什么建立连接要三次握手而断开连接要四次挥手? TCP通信过程是一个全双工模式,即在这条高铁线上要有两个轨道,两边可以同时发车。所以断开连接前提就是要保证两条轨道都没有车,然后双方才能各自发起断开动作。

1MSL时间留给最后的ACK确认报文段到达服务器端,1MSL时间留给服务器端再次发送的FIN。

DNS既使用tcp又使用udp。

dns域名解析过程:在浏览器输入baidu.com,操作系统会检查本地的hosts文件是否有这个网站的映射关系,若有就调用这个ip地址映射,完成解析。若hosts没有,则找本地dns缓存。若hosts和dns缓存都没有,则找tcp/ip参数中设置的首选dns服务器,在此叫本地dns服务器,此服务器收到查询时,若要查询的域包含在本地配置资源当中,则返回。若要查询的域名不是本地dns解析,但该服务器已经缓存了此网址的映射关系,则调用这个ip地址映射。若本地资源和缓存都没有,则根据本地dns服务器设置(是否设置转发器)进行查询:未用转发模式,本地dns把请求发给根dns服务器,根dns服务器收到请求后会判断这个域名是谁来授权管理,则会返回给一个负责顶级域名服务器的ip,本地dns收到这个ip后,将到联系负责.com的这个服务器,若这台负责.com的服务器无法解析,则找下一级dns服务器的ip给主机,依次下去。若用转发模式,dns服务器就能把请求发给上一级dns服务器,由上一级进行解析,上一级若不能解析,再上一级。不管是否转发,都把结果给本地dns服务器,再由本地dns服务器给客户机。

本地向主机域名服务器查询一般是递归查询,就是若主机所询问的本地域名服务器不知道查询名的ip,则本地域名服务器就以客户的身份向其他根域名服务器发出请求,而不是让主机进行下一步查询,所以递归查询返回的结果,要么是ip地址,要么报错。

本地域名服务器向根dns服务器查询是迭代查询,当根域名服务器收到本地dns服务器请求时,要么返回一个ip,要么告诉本地dns服务器,你下一步需要向哪个dns服务器查询,然后让本地服务器自己查询。

tcp是面向连接,可靠的字节流服务。使用端口号区分应用进程。首部20字节,全双工。udp无连接,尽最大努力交付,面向报文,支持1对1,1对多,多对多,首部8字节。差别主要在适用性上,并非速度上。

http是TCP。HTTP是超文本传输协议,是客户端浏览器或其他程序与Web服务器之间的应用层通信协议。在Internet上的Web服务器上存放的都是超文本信息, 客户机需要通过HTTP协议传输所要访问的超文本信息。HTTP包含命令和传输信息,不仅可用于Web访问,也可以用于其他因特网/内联网应用系统之间的通信,从而实现各类应用资源超媒体访问的集成。

面向连接意味着两个使用tcp的应用(客户端,服务器)在彼此交换数据之前必须建立一个tcp连接。在一个tcp连接中,仅有两方进行彼此通信,广播和多播不能用于tcp。

TCP只支持点对点通信,UDP支持一对一、一对多、多对一、多对多的通信模式;TCP是面向字节流的,UDP是面向报文的;TCP有拥塞控制机制;UDP没有拥塞控制,适合媒体通信;TCP首部开销(20个字节)比UDP的首部开销(8个字节)要大;

tcp通过下列方式提供可靠性:

将应用数据分割为tcp认为最合适发送的数据块。

超时重传:当tcp发出一段后,他启动一个定时器,等待目的端确认收到这个报文段。若不能及时收到一个确认,将重发这个报文段。当tcp收到发自tcp链接另一端的数据时,它将发送一个确认(对于收到的请求,给出确认响应),这个确认不是立即发送,通常将推迟几分之一秒(之所以推迟,可能是要对包做完校验)。若tcp收到包,校验出包有错,丢弃报文段,不给出响应,tcp发送端会超时重传。

对于失序数据进行重新排序,然后交给应用层(tcp报文段作为ip数据报进行传输,而ip数据报到达时会失序,因此tcp报文段的到达也可能失序。若必要,tcp将对收到的数据进行重新排列,以正确的顺序交给应用层)。

校验和:TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程中的任何变化。如果收到段的检验和有差错,TCP将丢弃这个报文段和不确认收到此报文段。

对于重复的数据,直接丢弃。

tcp可以进行流量控制,防止较快主机致使较慢主机缓存溢出,点对点。采用滑动窗口进行流量控制,滑动窗口大小可变,窗口大小单位是字节。发送窗口在连接建立时由双方确定,但在通信过程中,接收端可以根据自己资源的情况,随时动态的调整对方发送窗口上限制。接收端窗口:这是接收端根据其目前的接受缓存大小所许诺的最新窗口值,接收端将此窗口值放在tcp报文的首部中的窗口字段,传送给发送端,是来自接收端的流量控制。

拥塞控制:全局性,防止过多数据注入网络。慢开始,拥塞避免,快重传,快恢复。拥塞窗口:这是发送端根据自己估计的网络拥塞程度而设置的窗口值,是来自发送端的流量控制。

慢开始:由小到大逐渐增大发送端的拥塞窗口数值。当网络发生拥塞时,路由器就会丢掉分组,因此,只要发送端没有按时收到应到达的确认报文ack,就可以认为网络出现了拥塞。发送窗口上限 = min{接收窗口,拥塞窗口}。为了防止拥塞,窗口cwnd的增长引起网络拥塞,还需要慢开始门限ssthresh。当cwnd>ssthresh,使用拥塞避免算法;当cwnd=ssthresh,既可使用慢开始也可使用拥塞避免算法。无论是慢开始还是拥塞避免,只要发送端发现网络阻塞,就将慢开始门限设为出现拥塞时发送窗口的一半,然后拥塞窗口唯一,并执行慢开始算法。这样做的目的是迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕。

快重传算法规定:发送端只要一连收到三个重复ack,即可断定有分组丢失,就应该立即重传丢失的报文,而不需要等待为该报文设置的重传计时器超时。与慢开始不同,拥塞窗口不设为1,而设为慢开始门限+3*最大报文段mss。

快恢复:当发送方连续收到三个重复确认时,就执行“乘法减小”算法,把慢开始阀值ssthresh减半。接着不执行慢开始,而是从新阀值ssthresh开始执行拥塞避免算法(加法增大)。

tcp保活功能,主要为服务器应用程序提供,服务器应用程序需要知道客户机是否崩溃,从而可以代表客户使用资源。

如果一个给定的连接,在两个小时内没有任何动作,则服务器就像客户发送一个探测报文段,客户主机必须处于以下四个状态之一:

客户主机依然正常运行,并从服务器可达,客户的tcp响应正常,而服务器也知道对方是正常的,服务器在两个小时后将保活定时器复位。

客户主机已经崩溃,并且关闭或正在重启。在任何一种情况下,客户的tcp都没有响应,服务器不能收到探测的响应,并在75s后超时,服务器总共发送10个这样的探测,每个间隔75s。若服务器没有收到一个响应,他就认为客户主机已经关闭,并终止连接。

客户主机崩溃并已重新启动,服务器将收到一个对其保活探测的响应,这个效应是一个复位,使得服务器终止这个链接。

客户机正常运行,但服务器不可达。

tcp保活功能是探测长连接的存活状况。

字节流服务:两个应用通过tcp连接,tcp不在字节中插入记录标识符,这种称为字节流服务。tcp字节流的内容不做任何解释,tcp不知道传输的字节流数据是二进制还是ascii字符或者其他类型数据,字节流的解释由两端的应用进行。

怎么用udp实现tcp:由于在传输层udp已经是不可靠的,那就要在应用层自己实现一些保证可靠传输的机制,简单来说,要使用upd来构建可靠的面向连接的数据传输,就要实现类似于tcp超时重传(定时器),拥塞控制(滑动窗口),有序接受(添加包序号),应答确认(ack和seq)。目前已经拥有了实现udp可靠运输的机制——udt:主要目的高速广域网海量数据传输,是应用层协议。

osi:物理,数据链路,网络,传输,会话,表示,应用。

NAT:网络地址转换,常用于私有地址与公有地址转换,以解决ip地址匮乏问题。

a:1-127;b:128-191;c:192-223。0和127不作为a类地址,掩码作用就是划分网络地址和主机地址,与掩码运算后结果相同,则处于同一子网。

138.96.0.0/16其中16表示子网掩码1的个数,255.255.0.0,1为网络号,0为主机号。

在一个ip数据包到达目的之前,它不可能重组,但可能分散为碎片。

ping基于icmp协议,是tcp/ip协议族是协议,在网络层,用于ip主机、路由器之间传输控制消息。控制消息是指网络通不通,主机是否可达、路由是否可用等网络本身的消息。这些控制协议虽然并不传输用户数据,但是对于用户数据的传递起着重要作用。ping,tracert都是基于icmp。

可以利用系统规定的icmp数据包的最大尺寸不超过64k,向主机发起ping of death攻击,原理:若icmp数据包超出64k上限,主机就会出现内存分配错误导致tcp/ip堆栈崩溃,致使主机死机。防范方法:在路由器上对icmp包进行带宽限制,将icmp占用的带宽控制在一定的范围,这样即使有icmp攻击,它所占用的带宽也非常有限。在主机上限制,设置icmp数据报的处理规则,最好是设定拒绝所有的icmp数据包。

每经过一个路由器,ttl减1,到0时丢弃。

应用网关:可以是一个代理服务器,可以被用来连接公司内部网络应用和公司外部网络应用,可以是防火墙构造的一部分。

简单网络管理协议SNMP协议的组成部分:SNMP本身+管理信息结构SMI+管理信息库MIB,SNMP报文组成部分:版本+首部+安全参数+SNMP报文的数据部分。

dhcp client寻找dhcp服务器过程,收到discovery的服务器都会回复。offer:表示该服务器可以给他提供ip地址。request:客户端选择一个服务器来要ip。ack:ip给客户端。

BGP是在自治系统之间的路由协议,当前英特网路由选择协议分为内部网关协议和外部网关协议。

DNS劫持:通过某些手段获得域名的解析控制权,修改此域名的解析结果,导致对该域名的访问由原ip转入修改后的指定ip。其结果是对特定的网址不能访问或访问的是假网址。

猜你喜欢

转载自blog.csdn.net/SEUSUNJM/article/details/86568659