TCP/IP协议栈相关问题总结

TCP/IP协议栈相关问题总结


  • 以太网帧有最小长度要求,要求最少有46个字节,而ARP协议请求或应答分组格式固定为28个字节,怎么满足以太网帧要求的最小长度?

    答:为了满足以太网帧要求的最小长度,在ARP协议分组报文之后插入填充(pad)字节,通常为18个字节的填充位。


  • IP数据报的检验和是如何计算的?

    答:首先把检验和字段置为0,然后对首部中每个16bit进行二进制反码求和,将结果存在检验和字段中,当接收方收到一份IP数据报后,同样对首部中的每个16bit进行二进制反码求和,如果结果为全1,则表示传输过程中没有发生任何错误,不是全1则发生错误。


  • 什么时候会产生ICMP主机或网络不可达差错报文?

    答:当路由器收到一份IP数据报但是又不能进行转发时,就要发送一份ICMP“主机不可达”差错报文。


  • IP首部中的片偏移字段是如何存储的?

    答:片偏移指出了某一分片在原分组中的相对位置,片偏移通常以8个字节为偏移单位,所以每个分片的长度一定是8字节的整数倍。


  • MTU=1500,UDP数据长度为3000字节,如何进行分片?IP数据报中的标志字段和片偏移字段如何设置?

    答:UDP数据部分长度为3000,IP数据部分则为3000+8=3008字节,MTU包括IP首部,所以每个数据报数据部分长度最长为1500-20=1480字节,因此将元数据报分为三片,第一个分片为1480(MF=1,DF=0,偏移为0),第二个分片为1480(MF=1,DF=0,偏移为185),第三个分片为48(MF=0,DF=0,偏移为185)。


  • IP路由表一般包括哪几项,如何进行路由选路?

    答:路由表中的每一项都包含以下信息:目的IP地址,下一跳路由器的IP地址(网关),接口地址(网卡)。IP路由选择的步骤是,首先搜索路由表,寻找能与目的IP地址完全匹配的表目(主机地址),否则,搜索路由表,寻找能与目的网络号相匹配的表目(网络地址),否则,寻找默认表目,将数据报发向默认网关。路由表选路的过程就是子网掩码由长到短,也就是32位到0位的一个查询过程。


  • TCP首部为什么有首部长度,校验和与UDP的校验和有什么区别?

    答:与UDP首部不同,UDP首部固定,而TCP首部是非固定的,它的首部包括又选项字段,所以TCP首部需要首部长度字段。

    TCP的校验和是必须有的,而UDP的校验和是可选的。


  • 窗口探测报文是什么样的报文,包含什么数据?

    答:当接收方发送窗口为0的报文时,发送方便启动坚持定时器,一般时间为5-60秒,当定时器溢出时,发送方便发送窗口探测报文,窗口探测报文包含1个字节的数据,当发送方接收到应答后,如果是窗口更新报文则进行数据报发送,否则重新启动定时器。


  • 时间等待计时器的时间为什么是2MSL?

    答:MSL表示一个数据报被丢弃前在网络中所能存活的最大生存时间,将时间等待计时器设置为2MSL是因为:当发送方发送最后的ACK后,这个ACK有可能会丢失,这样接收方在一定时间后会对FIN报文进行重传,所以发送方在接收到重传的FIN报文时前会有两个报文存活时间的等待时间。


  • TCP选项字段MSS和window size value作用?

    MSS是TCP一次能够传输的数据(不包括协议头的开销)的最大值,客观地反映了信道和两个客户端的处理能力的变化情况。window size value接收端的窗口大小,起始于确认序号字段指明的值,这个值是接收端正期望接收的字节。接收方通过窗口大小来告诉发送方自己目前的接收能力,发方发送的数据大小不能超过收方的窗口大小。这样就能防止发方和收方的速度不同步,达到流量控制的目的。


  • 如何判断是报文是失序报文还是重传报文?

    答:在快重传的机制中,发送方在接受到三个重复的ACK后就判断报文丢失并进行重传,相反,如果接受方在接受到一个报文后如何判断它是重传报文还是传输延时而失序的报文,同样是看接受到报文前重复发送ACK的次数,如果重复ACK小于三次,则判断为失序报文,否则为重传报文。


  • 保活定时器的周期?

    答:保活定时器触发时间为2个小时,当一个连接在2个小时之内没有任何动作,则服务器的保活定时器就会溢出,向客户端发送探查报文,如果无响应,则每隔75秒再发送一个报文,如果连续10次没有响应,就认为对方已经不在并终止连接。


  • TCP传输时,MSS=1460,传输3000字节报文,传输过程中报文段的序号和确认序号各是多少,最终客户端的序列号和确认序列号各是多少?

    答:

    1)假设初始号为0,在建立连接时,SYN占一位,连接建立后报文段的序号seq=1,ack=1;

    2)报文长度为3000,需要进行分片,三个报文长度分别为1460/1460/80。

    3)传输过程中第一个报文seq=1,接收方发回的ack=1461;第二个报文段seq=1461,对面的ack=2921;第三个报文段seq=2921,对面的ack=3001;

    4)经过分片传输后最终的序号是3001,而在拆链时,FIN又占一位,所以最终序列号seq=3002,ack=2。


  • IP首部中的三位分片标识的含义,片偏移如何填写?

    三位标识包括1bit的保留子字段。1bit的“不分片”子字段,该位置1,IP将不对数据报进行分片。1bit的“更多的片”子字段,IP数据报分片时,除了最后一片外,其它每个组成数据报的片都要将该比特置1。片偏移指该片偏移原始数据报开始处的位置。数据报分片时,除最后一片,其余每一片都要是8字节的整数倍,片偏移填写为该片前面传输数据的字节数的八分之一。


  • ICMP错误应答如何知道是哪个应用的?

    ICMP的一个规则是,ICMP差错报文必须包含生成该差错报文的数据报首部(包含选项),还必须至少包含跟在该IP首部后面的前8个字节。IP首部后面的前8个字节包含UDP首部中的源端口号和目的端口号。接受ICMP的系统可以根据源端口号来把差错报文与某个特定用户进程相关联。


  • UDP如何计算检验和?

    检验和是16bit二进制求和。UDP数据报的长度可以为奇数字节,但是检验和算法是把若干个16bit相加,解决方法是必要时在最后增加填充字节0。UDP数据报含有12字节长的伪首部,伪首部包含IP首部的一些字段,其目的是让UDP两次检查数据是否已经正确到达目的地。


  • TCP如何保障可靠传输?

    TCP会建立持续的连接,数据会被截断为合理的长度,对于收到的请求给出确认的响应,超时重发,检验出有错时丢弃报文段,不给出响应,发送端超时重发。对时序就进行重新排序然后交给应用层。对重复数据能够丢弃。可以进行流量控制,防止较快主机致使较慢主机缓冲溢出。


  • TCP窗口为0如何处理?

    发送方会停止发送数据 等待接收方发送窗口为非0的通知并且启用坚持计时器在规定的时间内未收到接收方的通告时会发送试探信息


  • 2000的应用层数据用UDP和TCP分别如何传输?

    当MTU为1500时,2000的应用层数据按照UDP传输时被分成1460和540,在IP封装后为1500和560。按照TCP传输时被分为1460和540,经过IP封装后为1500和580。


  • 2.2.2.2/16 ping 2.2.2.1/24的过程?

    1)配置A的IP为2.2.2.2子网掩码为255.255.0.0,B的IP为2.2.2.1,子网掩码为255.255.255.0.则A Ping B的时候A所处网段2.2.0.0,B所处网段2.2.2.0,不在同一网段。

    2)配置路由C的接口IP分别为2.2.2.3和2.2.2.4.A发送ARP请求后,找到C的MAC地址,报文发送到C。

    3) 经路由C转发到主机B。

    4)报文到达B之后,根据B的子网掩码,求出A所处的网段为2.2.2.0,B所处的网段为2.2.0.0.处于同一网段,B广播ARP请求后,收到A的应答后,就可以由B向A发送数据报。


  • 什么是TCP快速重传?为什么快?

    一般来说,重传发生在超时之后,但是如果发送端接收到3个以上的重复ACK,就应该意识到数据丢了,需要重新传递。这个机制不需要等到重传定时器溢出,所以叫做快速重传,而快速重传以后,因为走的不是慢启动而是拥塞避免算法,所以这又叫做快速恢复算法。


  • IP有检验和计算,为什么TCP还要计算检验和?

    IP层的检验和只对IP首部进行检验,TCP检验和检验IP数据报的数据部分。


  • 桥接的概念是什么?

    答:通俗点讲,桥接就是网络延伸,也就是说,如果存在一台双网卡的电脑,就可以利用桥接技术把两个网卡连接上,其中一个网卡A可用连接外网,另外一个网卡B可以连接无线路由器,手机通过无线路由器上网,这时我们就可以在网卡B上对手机上网流量进行抓包分析。


  • STUN是做什么?

    答:STUN(Simple Traversal of UDP over NATs,NAT 的UDP简单穿越)是一种网络协议,它允许位于NAT(或多重NAT)后的客户端找出自己的公网地址,查出自己位于哪种类型的NAT之后以及NAT为某一 个本地端口所绑定的Internet端端口。这些信息被用来在两个同时处于NAT 路由器之后的主机之间建立UDP通信。


  • NAT功能,局域网IP及公网IP的区别?

    ​ NAT全名Network Address Translation,即网络地址转换。NAT服务器可以通过修改IP实现IP分享的功能。

    ​ 公网IP是有限的,因此一般建立局域网都是使用私有IP,私有IP和公网IP不能互通。NAT服务器会将局域网的私有IP修改为NAT服务器的公有IP,之后将数据帧发往外网。

  • FTP为什么需要使用PASV模式?

    答:因为有些客户端的防火墙不允许从外部向客户端建立连接,因此必须使用PASV模式由客户端发起连接。

    可能存在这样的情况,客户端的IP是个内网的IP,服务器的IP是外网IP,当进行数据传输时,内网的IP对于服务器是不可见的,所以服务器无法找到客户端PORT命令指明的IP地址。只能由服务器启动监听才能建立数据连接,所以必须使用PASV模式进行。

  • FTP客户端192.168.1.1的端口为10000时,PORT命令参数如何填写?

    答:PORT命令格式是{PORT n1,n2,n3,n4,n5,n6},其中客户端IP地址(n1,n2,n3,n4),端口(n5*256+n6)。

    所以客户端发出的PORT命令的参数为(192,168,1,1,39,16)


  • FTP两个服务器架构中两个服务器如何进行数据传输?

    答:两台服务器B和C之间建立数据连接,客户端A分别向两个服务器发送控制命令,数据传输在B和C之间传输。

    具体的流程是,A向B发送PASV命令,B返回响应码中携带自己的IP地址和监听的端口号,接着A又向C发送PORT命令,参数为B返回的响应码中的IP地址和端口,C接到后就向该IP地址和端口发起数据连接,如果B需要从C上下载文件,则A分别向B和C传输STOR和RETR命令,具体文件传输由C到B。


  • 断点上传的断点位置客户端如何知道?

    答:断点上传基本流程是,客户端首先获取服务器上和本地要上传文件的同名文件大小;客向服务器发送“REST + 长度”命令;最后向服务器发送“STOR + 文件名”命令,并开始上传。而其中断点的位置在第一步中可以知道,获得服务器上同名文件的大小使用FTP中的SIZE命令,返回的是文件的大小,以此作为断点的位置。


  • HTTP中哪些字段可以用来识别数据流?

    答:一般情况下我们可以利用HTTP头部域字段中Host字段,Host字段包含了需要请求资源的主机名,该字段可以用来识别数据流;Referer字段也可以用来识别,但是请求的资源可能从别处链接而来,所以Referer只能作为参考;请求行中的Request_URI也可以用来识别数据流。


  • HTTP版本1.0和1.1的区别?

    HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。户端和服务器端每次建立和关闭连接却是一个相对比较费时的过程,并且会严重影响客户机和服务器的性 能。

    ​ HTTP 1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。一个包含有许多图像的网页文件的多个请求和应答可以在一个连接中传输,但每个单独的网页文件的请求和应答仍然需要使用各自的连接。HTTP 1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果,以保证客户端能够区分出每次请求的响应内容,这样也显著地减少了整个下载过程所需要的时间。

    由于HTTP 1.0不支持Host请求头字段,WEB浏览器无法使用主机头名来明确表示要访问服务器上的哪个WEB站点,这样就无法使用WEB服务器在同一个IP地址和端口号上配置多个虚拟WEB站点。在HTTP 1.1中增加Host请求头字段后,WEB浏览器可以使用主机头名来明确表示要访问服务器上的哪个WEB站点,这才实现了在一台WEB服务器上可以在同一个IP地址和端口号上使用不同的主机名来创建多个虚拟WEB站点。HTTP 1.1的持续连接,也需要增加新的请求头来帮助实现,例如,Connection请求头的值为Keep-Alive时,客户端通知服务器返回本次请求结果后保持连接;Connection请求头的值为close时,客户端通知服务器返回本次请求结果后关闭连接。HTTP 1.1还提供了与身份认证、状态管理和Cache缓存等机制相关的请求头和响应头。

    ​ RANGE:bytes是HTTP/1.1新增内容,HTTP/1.0每次传送文件都是从文件头开始,即0字节处开始。RANGE:bytes=XXXX表示要求服务器从文件XXXX字节处开始传送,这就是我们平时所说的断点续传!


  • HTTP1及HTTP2的区别

    ​ HTTP1报头字段经常重复、冗长。HTTP2通过报头字段压缩及多路复用可有效利用网络资源并减少感知延迟。HTTP2允许在一个连接上交错地建立请求和响应消息,并使用高效率编码HTTP报头字段。它还允许为每个请求分配优先级,服务器可以根据请求的优先级顺序完成客户端的响应。1xx系列的HTTP响应状态码在HTTP/2不支持。HTTP2使用特殊的“:”开头的伪头字符来代替HTTP1中的请求行及应答行中的信息。如:method=GET来代替请求行中的命令(GET)。

  • HTTP和HTTPS的区别?

    1)https协议需要到ca申请证书,一般免费证书很少,需要交费。
    2)http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议
    3)http和https使用的是完全不同的连接方式用的端口也不一样,前者是80,后者是443。
    4)http的连接很简单,是无状态的
    5)HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议 要比http协议安全

  • 简述HTTP的长连接和短连接的概念?

    答:HTTP的长连接和短连接本质上是TCP长连接和短连接。HTTP属于应用层协议.

    短连接:浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。

    长连接:当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果 客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接要客户端和服务端都支持长连接。

    TCP短连接: client向server发起连接请求,server接到请求,然后双方建立连接。client向server发送消息,server回应client,然后一次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是client先发起 close操作.短连接一般只会在client/server间传递一次读写操作

    TCP长连接: client向server发起连接,server接受client连接,双方建立连接。Client与server完成一次读写之后,它们之间的连接并不会主动关闭,后续的读写操作会继续使用这个连接。


  • 在浏览器中输入www.baidu.com后执行的全部过程。(提示:画出TCP三次建链过程与TCP四次拆链过程,请求报文TCP载荷长度为100,响应TCP载荷长度为200)

    答:
    1.根据域名,进行DNS域名解析;
    2.拿到解析的IP地址,建立TCP连接;
    3.向IP地址,发送HTTP请求;
    4.服务器处理请求;
    5.返回响应结果;
    6.关闭TCP连接;
    7.浏览器解析HTML;
    8.浏览器布局渲染;
    在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值