计算机网络基础

1. 简述从输入网址到浏览器显示的过程

  • DNS域名解析(浏览器会在浏览器DNS缓存,本地DNS缓存,和Hosts中寻找对应的记录,如果没有获取到则会请求DNS服务来获取对应的ip)
  • 建立TCP连接(三次握手)
  • web浏览器向web服务器发送http请求报文(B/S模式)
  • 服务器响应http请求
  • 浏览器解析动态和静态资源,并进行页面的渲染呈现。
  • 断开TCP连接

2. TCP 为什么是三次握手四次挥手

  • 三次握手的最主要目的是保证连接是双工
  • 可靠更多的是通过重传机制来保证的
  • 通过三次握手确认双方收发功能都正常,四次也可以但是显得比较多余。
    网络基础-四次挥手断开连接.jpg

    为什么需要TIME_WAIT状态
    a、可靠的终止TCP连接
    b、保证让迟来的TCP报文段有足够的时间被识别并丢弃
    c、为实现TCP这种全双工连接的可靠释放
    这样可让TCP再次发送最后的ACK以防这个ACK丢失(另一端超时并重发最后的FIN)这种2MSL等待的另一个结果是这个TCP连接在2MSL等待期间,定义这个连接的插口(客户的IP地址和端口号,服务器的IP地址和端口号)不能再被使用。这个连接只能在2MSL结束后才能再被使用。
    d、为使旧的数据包在网络因过期而消失
    每个具体TCP实现必须选择一个报文段最大生存时间MSL。它是任何报文段被丢弃前在网络内的最长时间。

3. TCP如何保证传输可靠性

  1. 校验和: 接收端进行检测校验
  2. 确认应答+序列号: TCP给发送的每一个包进行编号,接收方对数据包进行排序,把有序数据传送给应用层
  3. 超时重传: 是指发送出去的数据包到接收到确认包之间的时间
  4. 最大消息长度: 通信双方约定一个最大消息长度【MSS】
  5. 拥塞控制: 【解决通信双方主机传送速率不一致的问题】发送接收端都有缓冲区,使用拥塞窗口来控制数据包的收发速率,当网络拥塞时,减少数据的发送。

TCP的拥塞控制采用了四种算法详解

  1. 慢开始:
  2. 拥塞避免
  3. 快速重传
  4. 快速恢复

4. TCP 如何保障数据包有效

5. HTTPS 和 HTTP 的区别

  • SSL/TLS:安全套接层/传输层安全协议(防止HTTP包被篡改,拦截和偷听)
  • HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议
  • 对称加密:客户端和服务端使用同一个密钥进行加解密
  • 双向非对称加密:客户端和服务端都有自己的公私钥对(公钥PubA,是通过私钥PriA计算出来的)。签名使用自己的私钥、加密使用对方的公钥
  • 单向非对称加密:客户端不保存公私钥对(服务端要保存), 客户端需要提前知道服务器端的公钥PubB。
  • 数字证书、根证书和CA信任链都是为了解决:【公钥如何安全传输的问题】

SSL/TLS协议四次握手过程

TLS四次握手示意图.png
  • 在建立TCP连接之后,数据发送之前,SSL/TLS协议通过四次握手(两个来回,协商出客户端和服务器之间的对称加密密钥)
  • 第一个来回:是公钥的传输与验证过程(通过数字证书)
  • 第二个来回:通过第一个来回解析出公钥,协商出对称加密的密钥。

6. TTL的含义

  • TTL值本机可以设置,代表数据在网络中长时间没有响应被丢弃时经过的最大的路由器数量。
eg:在xp系统下执行:ping www.baidu.com,
显示有byte、time、TTL值,此时的TTL值为:56,
所以它经过的路由器为64-56=8个路由器到达百度的服务器。
再如:
执行:ping 192.168.77.254
到达自己电脑路由器的网关,返回的TTL=64,即经过0个路由到达的。

网络采用大端字节序,低位字节(0~7bit)存储在内存的高地址处。

7. TCP与UDP的区别?

  • TCP是一种面向连接的可靠传输协议。包含三大功:可靠传输, 流量控制和拥塞控制
  • TCP的可靠传输是依赖:序号管理,应答确认和超时重传三大机制来保证的。
  • tcp传输的是数据流,而udp是数据包,tcp会进过三次握手,udp不需要

8. epoll和select的区别?

  • select在一个进程中打开的最大fd是有限制的,由FD_SETSIZE设置,默认值是2048。不过 epoll则没有这个限制,内存越大,fd上限越大,1G内存都能达到大约10w左右。
  • select的轮询机制是系统会去查找每个fd是否数据已准备好,当fd很多的时候,效率当然就直线下降了,epoll采用基于事件的通知方式,一旦某个fd数据就绪时,内核会采用类似callback的回调机制,迅速激活这个文件描述符,高效。
  • 无论是select,poll还是epoll,它们都需要内核把fd消息通知给用户空间。避免内存拷贝,epoll通过内核与用户空间mmap同一块内存来实现。而select则做了不必要的拷贝

9. http常见响应状态码

200 响应成功
302 跳转,重定向(通过响应头中的location属性指定)
400 bad request,请求报文存在语法错误
401 unauthorized,表示发送的请求需要有通过 HTTP 认证的认证信息
403 forbidden,表示对请求资源的访问被服务器拒绝
404 not found,表示在服务器上没有找到请求的资源
500 服务器内部错误

10. http能不能一次连接多次请求,不等后端返回

http本质上市使用socket连接,因此发送请求,接写入tcp缓冲,是可以多次进行的,这也是http是无状态的原因
1、请问怎么确保节点传输存储的可靠性
2、请你说一下TCP怎么保证可靠性,并且简述一下TCP建立连接和断开连接的过程
3、请你说一说TCP的模型,状态转移
4、请回答一下HTTP和HTTPS的区别,以及HTTPS有什么缺点?
5、请你说一说HTTP和HTTPS的不同
6、请你说一说HTTP返回码
7、请你说一说IP地址作用,以及MAC地址作用
8、请介绍一下操作系统中的中断
9、请回答OSI七层模型和TCP/IP四层模型,每层列举2个协议
10、请你说一说TCP的三次握手和四次挥手的过程及原因
11、搜索baidu,会用到计算机网络中的什么层?每层是干什么的
12、请你说一说TCP拥塞控制?以及达到什么情况的时候开始减慢增长的速度?
13、请问TCP用了哪些措施保证其可靠性
14、请你说说TCP/IP数据链路层的交互过程
15、请你说说传递到IP层怎么知道报文该给哪个应用程序,它怎么区分UDP报文还是TCP报文
16、请问你有没有基于做过socket的开发?具体网络层的操作该怎么做?(其实就是网络编程的基本步骤)
17、请问server端监听端口,但还没有客户端连接进来,此时进程处于什么状态?
18、请问TCP三次握手是怎样的?
19、请问tcp握手为什么两次不可以?为什么不用四次?
22、请你来说一下TCP拥塞控制?
20、TCP和UDP的区别和各自适用的场景
21、请你来说一下TCP三次握手四次挥手的过程,为什么tcp连接握手需要三次, time_wait状态
22、请你来说一说http协议
23、请你来说一下GET和POST的区别
24、请你来说一下socket编程中服务器端和客户端主要用到哪些函数
25、请你来说一下数字证书是什么,里面都包含那些内容
26、请你来介绍一下UDP的connect函数
27、请你讲述一下TCP三次握手,四次挥手,以及为什么用三次握手?
28、请你说一下阻塞,非阻塞,同步,异步
29、请你讲述一下Socket编程的send() recv() accept() socket()函数?
30、请你说一下http协议会话结束标志怎么截出来?
31、time_wait状态什么时候产生?有什么危害?
32、linux如何观察连接状态?

OSI 7层网络模型中各层的名称及其作用?
TCP/IP 4层网络模型名称及其作用?
OSI 7层网络中各层的常见协议以及协议作用?
OSI网络模型中工作在各个层次的物理设备以及其作用?
IP层功能?如何用int型变量保存一个IPv4地址?
TCP协议(重点):TCP3次握手,4次挥手详细过程。TCP滑动窗口,拥塞控制,7. 流量控制原理。TCP 建立、断开连接过程中13中状态以及各种状态之间的转换条件? TCP粘包问题?如何解决?
UDP协议:头信息?使用场景?如何使用UDP建立可靠连接?
http协议:各个版本的区别?http请求头,响应头常用属性?常用状态码及其含义?
socket编程:服务端,客户端建立TCP连接调用那些函数?分别对应什么状态?
Linux 常用网络命令的原理:ping, traceroute
浏览器中点击一个超链接到显示对应页面的全过程?
DNS的作用?什么时候使用TCP?什么时候使用UDP?
TCP的拥塞控制?重传机制?
TCP和UDP的区别?UDP一对多的情况?什么情况下使用UDP?
ping,tracerout原理?怎样判断两个IP地址是否属于同一个网段?
路由器属于那一层?IP层的功能?
DNS原理?DNS是哪一层协议?什么时候使用TCP,什么时候使用UDP?
TCP三次握手的过程?为什么会有第三次的确认报文?
介绍一下https。http请求报文,应答报文中包含哪些信息?
TCP确认重传机制?拥塞控制的机制?
介绍一下socket()。客户端和服务端进行连接过程调用的函数。当客户端与服务端进行tcp连接,服务端没有accept()时,两端会处于什么状态?

你可能感兴趣的:(计算机网络基础)