C++面经,计算机网络相关

(1) 建立TCP服务器的各个系统调用
建立TCP服务器连接的过程中主要通过以下系统调用序列来获取某些函数,这些系统调用主要包括:
socket(),bind(),listen(),accept(),send()和recv()。
详情可以在CSDN搜一下,这里没有一一列举
(2) 继上一题,说明socket网络编程有哪些系统调用?其中close是一次就能直接关闭的吗,半关闭状态是怎么产生的?
socket() 创建套接字
bind() 绑定本机端口
connect() 建立连接 (TCP三次握手在调用这个函数时进行)
listen() 监听端口
accept() 接受连接
recv(), read(), recvfrom() 数据接收
send(), write(), sendto() 数据发送
close(), shutdown() 关闭套接字
使用close()时,只有当套接字的引用计数为0的时候才会终止连接,而用shutdown()就可以直接关闭连
接。
(3) 对路由协议的了解与介绍。内部网关协议IGP包括RIP,OSPF,和外部网关协议EGP和BGP.
RIP“路由信息协议(Route Information Protocol)”的简写,主要传递路由信息,通过每隔30秒广播
一次路由表,维护相邻路由器的位置关系,同时根据收到的路由表信息使用动态规划的方式计算自
己的路由表信息。RIP是一个距离矢量路由协议,最大跳数为16跳,16跳以及超过16跳的网络则认为
目标网络不可达。
(4) UDP如何实现可靠传输
因为UDP是无连接的协议,所以在传输层上无法保证可靠传输,要想实现可靠传输,只能从应用层实
现。需要实现seq/ack机制,重传机制和窗口确认机制。
就要接收方收到UDP之后回复个确认包,发送方有个机制,收不到确认包就要重新发送,每个包有递增
的序号,接收方发现中间丢了包就要发重传请求,当网络太差时候频繁丢包,防止越丢包越重传的恶性
循环,要有个发送窗口的限制,发送窗口的大小根据网络传输情况调整,调整算法要有一定自适应性。
(5) TCP和UDP的区别
TCP是面向连接的协议,提供的是可靠传输,在收发数据前需要通过三次握手建立连接,使用ACK
对收发的数据进行正确性检验。而UDP是无连接的协议,不管对方有没有收到或者收到的数据是
否正确。
TCP提供流量控制和拥塞控制,而UDP没有。
TCP对系统资源的要求高于UDP,所以速度也比UDP慢。
TCP数据包是没有边界的,会出现粘包的问题,UDP包是独立的,不会出现粘包问题。
所以在应用方面,如果强调数据的完整性和正确性用TCP,当要求性能和速度的时候,使用UDP更
加合适。
注:单凭TCP是不能保证完整性的,要是有黑客伪造TCP包,是无法识别的。
(6) TCP和UDP相关的协议与端口号
TCP族的协议有HTTP,HTTPS,SMTP,TelNet,FTP等,UDP族的协议有DNS,DHCP等等。
(7) TCP(UDP,IP)等首部的认识(http请求报文构成)
TCP的头部大致包括:源端口,目的端口,序号,确认号,偏移位,标志位,校验和等等
UDP的头部则包括:源端口,目的端口,长度,校验和。
IP数据包的头部包括:源IP地址,目的IP地址,协议,校验和,总长度等等
(8) 网页解析的过程与实现方法
这里仅展示浏览器解析服务器响应的过程,URL解析和交互的完整过程在(9)
首先是html文档解析,浏览器会将html文档生成解析树,也就是DOM树,它由dom元素以及属性
节点组成。
然后浏览器加载过程中如果遇到了外部css文件或者图片资源,还会另外发送请求来获取css文件和
资源,这个请求通常是异步的,不会影响html文档的加载。
不过如果浏览器在加载时遇到了js文件,则会挂起渲染的线程,等待js文件加载解析完毕才恢复
html的渲染线程。
然后是css解析,将css文件解析为样式表对象来渲染DOM树。
(9) 在浏览器中输入URL后执行的全部过程(如www.baidu.com)
. 首先是域名解析,客户端使用DNS协议将URL解析为对应的IP地址;
2. 然后建立TCP连接,客户端与服务器通过三次握手建立TCP连接;
3. 接着是http连接,客户端向服务器发送http连接请求; (http连接无需额外连接,直接通过已经
建立的TCP连接发送)
4. 服务器对客户端发来的http请求进行处理,并返回响应;
5. 客户端接收到http响应,将结果渲染展示给用户。
(10) 网络层分片的原因与具体实现
因为在链路层中帧的大小通常都有限制,比如在以太网中帧的最大大小(MTU)就是1500字节。如果
IP数据包加上头部后大小超过1500字节,就需要分片。
IP分片和完整IP报文差不多拥有相同的IP头,16位ID域对于每个分片都是一致的,这样才能在重新组装
的时候识别出来自同一个IP报文的分片。在IP头里面,16位识别号唯一记录了一个IP包的ID,具有同一
个ID的IP分片将会重新组装;而13位片偏移则记录了某IP片相对整个包的位置;而这两个表中间的3位
标志则标志着该分片后面是否还有新的分片。这三个标志就组成了IP分片的所有信息(将在后面介绍),
接受方就可以利用这些信息对IP数据进行重新组织。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值