-
请你说一下TCP怎么保证可靠性,并且简述一下TCP建立连接和断开连接的过程
tcp保证可靠性的操作:
- 序列号、确认应答、超时重传(超时重传时间为2*报文段往返时间+偏差值)
- 窗口控制(窗口大小就是无需等待确认而可以继续发送数据的最大值)与告诉重发控制(重复确认应答)
- 拥塞控制:慢开始、拥塞避免、快重传和快恢复
这样可以达到:在TCP通信时,网络吞吐量呈现逐渐的上升,并且随着拥堵来降低吞吐量,再进入慢慢上升的过程,网络不会轻易的发生瘫痪。
三次握手,四次挥手。
-
搜 索baidu,会用到计算机网络中的什么层?每层是干什么的
浏览器根据输入的URL通过DNS解析(UDP协议)为IP地址
得到IP地址后,浏览器与服务器建立连接(HTTP协议)-
HTTP生成报文传给TCP层处理(TCP协议)
TCP数据包发送给IP层(IP协议)
在网段内寻址通过(以太网协议/PPP/SLIP)
直达物理地址(ARP协议)
-
请你说说TCP/IP数据链路层的交互过程
网络层等到数据链层用mac地址作为通信目标,数据包到达网络等准备往数据链层发送的时候,首先会去自己的arp缓存表(存着ip-mac对应关系)去查找改目标ip的mac地址,如果查到了,就讲目标ip的mac地址封装到链路层数据包的包头。如果缓存中没有找到,会发起一个广播:who is ip XXX tell ip XXX,所有收到的广播的机器看这个ip是不是自己的,如果是自己的,则以单拨的形式将自己的mac地址回复给请求的机器。
-
请你说一说TCP的模型,状态转移
-
请回答一下HTTP和HTTPS(TCP/IP的应用层)的区别,以及HTTPS有什么缺点?
- HTTP 是超文本传输协议,信息是明文传输,HTTPS 则是具有安全性的 SSL 加密传输协 议。
- HTTP 和 HTTPS 使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是 443。
- HTTP 的连接很简单,是无状态的。HTTPS 协议是由 SSL+HTTP 协议构建的可进行加密传输、身份认证的网络协议,比 HTTP 协议安全。(无状态的意思是其数据包的发送、传输和接收都是相互独立的。无连接的意思是指通信双方都不长久的维持对方的任何信息)
HTTPS的优点:安全性高、可以认证用户和服务器,确保数据发送到正确的用户和服务器
HTTPS的缺点:握手阶段延时较高:在进行HTTP会话之前还需要进行SSL握手;
HTTPS部署成本高:一方面HTTPS协议需要使用证书来验证自身的安全性,所以需要购买CA证书;另一方面由于采用HTTPS协议需要进行加解密的计算,占用CPU资源较多,需要的服务器配置或数目高
-
请你说一说HTTP返回码
请求报文结构四部分构成:请求行(请求方法字段URL(网络地址,www统一资源定为标志)字段)
请求头部 (指明请求类型GET /POST)
空行 (告诉服务器请求头部到此为止)
请求数据(方法字段是GET,则此项为空,没有数据;POST,此处放置提交数据)
1xx:指示信息--表示请求已接收,继续处理。
2xx:成功--表示请求已被成功接收、理解、接受。
3xx:重定向--要完成请求必须进行更进一步的操作。
4xx:客户端错误--请求有语法错误或请求无法实现。
5xx:服务器端错误--服务器未能实现合法的请求。
常见状态代码、状态描述的详细说明如下。
200 OK:客户端请求成功。
206 partial content服务器已经正确处理部分GET请求,实现断点续传或同时分片下载,该请求必须包含Range请求头来指示客户端期望得到的范围
300 multiple choices(可选重定向):被请求的资源有一系列可供选择的反馈信息,由浏览器/用户自行选择其中一个。
301 moved permanently(永久重定向):该资源已被永久移动到新位置,将来任何对该资源的访问都要使用本响应返回的若干个URI之一。
302 move temporarily(临时重定向):请求的资源现在临时从不同的URI中获得,
304:not modified :如果客户端发送一个待条件的GET请求并且该请求以经被允许,而文档内容未被改变,则返回304,该响应不包含包体(即可直接使用缓存)。
403 Forbidden:服务器收到请求,但是拒绝提供服务。
t Found:请求资源不存在,举个例子:输入了错误的URL。
-
请你说一说IP地址作用,以及MAC地址作用
MAC地址是一个硬件地址,用来定义网络设备的位置,主要由数据链路层负责。
IP地址是IP协议提供的一种统一的地址格式,为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
-
请介绍一下操作系统中的中断
中断是指CPU对系统发生的某个事件做出的一种反应,CPU暂停正在执行的程序,保存现场后自动去执行相应的处理程序,处理完该事件后再返回中断处继续执行原来的程序。
中断一般三类:一种是由CPU外部引起的,如I/O中断、时钟中断;
一种是来自CPU内部事件或程序执行中引起的中断,例如程序非法操作,地址越界、浮点溢出;
一种是在程序中使用了系统调用引起的。
中断处理一般分为中断响应和中断处理两个步骤,中断响应由硬件实施,中断处理主要由软件实施。
-
请你说说传递到IP层(网络层)怎么知道报文该给哪个应用程序,它怎么区分UDP报文还是TCP报文
根据端口区分:看IP头汇总的协议标识字段,17是udp,6是tcp
-
请问你有没有基于做过socket的开发?具体网络层的操作该怎么做?(其实也是问网络编程的基本步骤)
Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面
服务端创建socket,绑定IP和端口号设置监听端口;
客户端创建socekt,设置IP和端口,发出连接请求;
服务器Socket监听到客户端Socket发来的连接请求之后,被动打开,并调用Accept()函数接收请求,
这样客户端和服务器之间的连接就建立好了;
分别获取服务端和客户端的输入输出进行通信。
-
请问server端监听端口,但还没有客户端连接进来,此时进程处于什么状态?
阻塞状态。使用了epoll,select等这样的io复用情况下,处于运行状态
-
请你来说一下数字证书是什么,里面都包含那些内容
数字证书是数字证书在一个身份和该身份的持有者所拥有的公/私钥对之间建立了一种联系
-
请你来介绍一下udp的connect函数
-
请你说一下阻塞,非阻塞,同步,异步
阻塞和非阻塞:调用者在事件没有发生的时候,一直在等待事件发生,不能去处理别的任务这是阻塞。
调用者在事件没有发生的时候,可以去处理别的任务这是非阻塞。
同步和异步: 调用者必须循环自去查看事件有没有发生,这种情况是同步。
调用者不用自己去查看事件有没有发生,而是等待着注册在事件上的回调函数通知自己,这种情况是异步
-
请你来说一下GET和POST的区别
对于GET方式的请求,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
而对于POST,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)