[八股速成]3.计算机网络
前言
孩子被问计网问傻了,赶紧抱佛脚拯救一下。
计算机网络
传输层TCP协议
请你说一下TCP怎么保证可靠性,并且简述一下TCP建立连接和断开连接的过程(三次握手四次挥手)
- 序列号、确认应答、超时重传
- 窗口控制与高速重发控制/快速重传(重复确认应答)
- 拥塞控制(慢启动、拥塞避免、快恢复、快重传)
请你说一说TCP的模型,状态转移
服务端状态转移:打开后处于listen,等待客户端的连接请求。收到请求则进入SYN_RECEIVE状态,并回复SYN和ACK表示接受连接,当再次收到ACK后,建立连接并进入establish状态。当服务端收到FIN=1时,表情客户端要关闭连接,此时服务端进入CLOSE_WAIT状态,表示可以继续发送但不再接收数据。当服务端数据发送完后,服务端会发送FIN,并进入LAST_ACK状态,收到客户端发来的FIN和ACK后关闭连接,进入CLOSE状态。
客户端状态转移:发送SYN=1后进入SYN_SEND状态,收到服务端发来的SYN和ACK后,客户端发送ACK并进入ESTABLISH状态。客户端主动发送FIN=1关闭连接,并进入FIN_WAIT_1状态。有如下三种:
- 收到服务端的ACK进入FIN_WAIT_2状态,还可以接收数据。
- 收到服务器发来的FIN=1,客户端发送ACK并进入CLOSING状态。
- 收到服务器发来的FIN+ACK,客户端会发送ACK进入TIME_WAIT状态,等待2MSL后关闭。
请回答OSI七层模型和TCP/IP四层模型,每层列举2个协议
OSI七层:
物理层:CLOCK、IEEE802.2 (中继器,集线器)
数据链路:PPP、FR、HDLC、VLAN、MAC (网桥,交换机)
网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)
传输层:TCP、UDP、SPX
会话层:NFS、SQL、NETBIOS、RPC
表示层:JPEG、MPEG、ASII
应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
请你说一说TCP的三次握手和四次挥手的过程及原因
请你说一说TCP拥塞控制?
拥塞控制是防止过多的数据注入网络,使得网络中的路由器或者链路过载。流量控制是点对点的通信量控制,而拥塞控制是全局的网络流量整体性的控制。发送双方都有一个拥塞窗口——cwnd。
1、慢开始
最开始发送方的拥塞窗口为1,由小到大逐渐增大发送窗口和拥塞窗口。每经过一个传输轮次,拥塞窗口cwnd加倍。当cwnd超过慢开始门限,则使用拥塞避免算法,避免cwnd增长过大。
2、拥塞避免
每经过一个往返时间RTT,cwnd就增长1。
在慢开始和拥塞避免的过程中,一旦发现网络拥塞,就把慢开始门限设为当前值的一半,并且重新设置cwnd为1,重新慢启动。(乘法减小,加法增大)
3、快重传
接收方每次收到一个失序的报文段后就立即发出重复确认,发送方只要连续收到三个重复确认就立即重传(尽早重传未被确认的报文段)。
4、快恢复
当发送方连续收到了三个重复确认,就将慢开始门限减半,将当前的cwnd设置为慢开始门限,并且采用拥塞避免算法(连续收到了三个重复请求,说明当前网络可能没有拥塞)。
采用快恢复算法时,慢开始只在建立连接和网络超时才使用。
拥塞避免达到什么情况的时候开始减慢增长的速度?
采用慢开始和拥塞避免算法的时候:
- 一旦cwnd>慢开始门限,就采用拥塞避免算法,减慢增长速度
- 一旦出现丢包的情况,就重新进行慢开始,减慢增长速度
采用快恢复和快重传算法的时候:
- 一旦cwnd>慢开始门限,就采用拥塞避免算法,减慢增长速度
- 一旦发送方连续收到了三个重复确认,就采用拥塞避免算法,减慢增长速度
请问tcp握手为什么两次不可以?为什么不用四次?
可能由于连接请求报文段延迟了一段时间后到达了服务器端而浪费服务端资源。
可以将两个报文合并。
TCP和UDP的区别和各自适用的场景?
1、基于连接与无连接;
2、对系统资源的要求(TCP较多,UDP少);
3、UDP程序结构较简单;
4、流模式与数据报模式 ;
5、TCP保证数据正确性,UDP可能丢包;
6、TCP保证数据顺序,UDP不保证。
请你说说TCP/IP数据链路层的交互过程
数据包到达网络层往数据链路层发送的时候,首先去ARP缓存表去查找IP对应的MAC地址。没查到就发起一个广播,收到广播的机器看到这个IP是自己的则会以单播形式将自己的MAC地址回复给请求机器。得到目标MAC地址后将其封装到链路层数据包的包头。
请你说一说IP地址作用,以及MAC地址作用
MAC地址是一个硬件地址,用来定义网络设备的位置,主要由数据链路层负责。而IP地址是IP协议提供的一种统一的地址格式,为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
应用层http
请回答一下HTTP和HTTPS的区别,以及HTTPS有什么优缺点?
1、https协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http是超文本传输协议,信息是明文传输,https则是具有安全性的SSL加密传输协议。
3、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
请你说一说HTTP返回码
- 1xx: 指示信息—表示请求已接收,继续处理。
- 2xx: 成功—表示请求已经被成功接收、理解、接受。
- 3xx: 重定向—要完成请求必须进行更进一步的操作。
- 4xx: 客户端错误—请求有语法错误或请求无法实现。
- 5xx: 服务器端错误—服务器未能实现合法的请求。
请你来说一说http协议
对器客户端和 服务器端之间数据传输的格式规范,格式简称为“超文本传输协议”。
http包含哪些结构,他如何组成这个协议?
分为请求报文和响应报文两类,都由开始行、首部行、实体主体组成。
请求报文包含三部分:
- 请求行:包含请求方法、URL、HTTP版本信息
- 请求首部字段
- 请求内容实体
响应报文包含三部分:
- 状态行:包含HTTP版本、状态码、状态码的原因短语
- 响应首部字段
- 响应内容实体
请你来说一下GET和POST的区别
GET用来获取资源,它只是获取、查询数据,不会修改服务器的数据。POST则是可以向服务器发送修改请求,进行数据的修改的。
请你说一下http协议会话结束标志怎么截出来?
看tcp连接是否有断开的四部挥手阶段。
证书的本质是什么?
证书的内容包括:电子签证机关的信息、公钥用户信息、公钥、权威机构的签字和有效期等等。目前,证书的格式和验证方法普遍遵循X.509 国际标准。
SSL证书本质上是一个X.509证书。X.509是定义证书数据结构的标准,它定义了应该包含在SSL证书中的数据字段。非对称加密。
其他
请介绍一下操作系统中的中断
中断是指程序执行过程中,遇到急需处理的事件时,暂时中止CPU上现行程序的运行,转去执行相应的事件处理程序,待处理完成后再返回原程序被中断处或调度其他程序执行的过程。
搜索baidu,会用到计算机网络中的什么层?每层是干什么的
请你来说一下数字证书是什么,里面都包含那些内容
请你说说传递到IP层怎么知道报文该给哪个应用程序,它怎么区分UDP报文还是TCP报文
根据端口继续区分需接受的程序。
根据IP协议头中标识字段:UDP 17 、TCP 6。
请问server端监听端口,但还没有客户端连接进来,此时进程处于什么状态?
请你来介绍一下UDP的connect函数
请你说一下阻塞,非阻塞,同步,异步
请问你有没有基于做过socket的开发?具体网络层的操作该怎么做?(其实就是网络编程的基本步骤)
请你来说一下socket编程中服务器端和客户端主要用到哪些函数
请你讲述一下Socket编程的send() recv() accept() socket()函数?