Skip to content

Latest commit

 

History

History
111 lines (89 loc) · 6.23 KB

计算机网络.md

File metadata and controls

111 lines (89 loc) · 6.23 KB

网络(TCP/IP)

1.TCP/IP协议

  1. Applications(应用层,SMTP,FTP,HTTP)
  2. Transport(传输层,TCP,UDP)
  3. Internet(网络层,IP)
  4. NetWork Interface(数据链路层)
  5. HardWare(物理层)

2. TCP如何保证可靠传输?三次握手过程?

(syn:synchronous;ack:Acknowledgement)

  1. 第一次握手:客户端发送syn包(syn=x)到服务器,并进入SYN_SEND状态,等待服务器确认;
  2. 第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(syn=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;
  3. 第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

超时重传是可靠性保证的另一个机制,其原理是发送某一个数据以后就开启一个计时器,在一定时间内如果没有得到发送的数据报的ACK报文,就重新发送数据,直到发送成功为止。

3.TCP和UDP区别?

  1. TCP是面向连接,可靠的数据流传输;UDP是非面向连接,不可靠的数据流传输。
  2. TCP传输单位称为TCP报文段;UDP传输单位称为用户数据报
  3. TCP注重数据安全性;UDP传输数据快

4. TCP滑动窗口机制与回退N针协议

5. TCP拥塞控制机制

补充:UDP为了达到TCP的功能必须实现拥塞控制,而且在路由之间实现,会话层允许不同机器上的用户之间建立会话关系。

6. socket模型

7. 电脑上访问一个网页,整个过程是怎么样的:DNS、HTTP、TCP、OSPF、IP、ARP

8. Ping的整个过程。ICMP报文是什么

9. C/S模式下使用socket通信,几个关键函数

10. IP地址分类

网络(HTTP)

1. Http的报文结构

  • 请求协议:

    • 请求首行:请求方式 请求路径 协议/版本号
    • 请求头: key:value
    • 请求空行:空行,用于分割头与正文
    • 请求正文:只有post请求有正文
  • 响应协议:

    • 响应首行:协议/版本号 状态码 状态码描述
    • 响应头:key:value
    • 响应空行:空行,用于分割头与正文
    • 响应正文:html代码,css,js,图片,文件等

2. Http的状态码含义(301和302区别,304缓存)

  • 2XX成功:200请求成功
  • 3XX重定向:
    • 301 Move Permanently 资源已经被永久的改变了位置,通常会发送HTTP Location来重定向到正确的新位置
    • 302 Found 资源现在临时从不同的URI响应请求,此时客户端还是继续向原有地址发送以后的请求
    • 304 Not Modified 如果客户端发送一个带条件的GET请求且该请求被允许,而文档内容没有发送改变,则服务器返回这个状态码
  • 4XX客户端错误:
    • 400 Bad Request 语法错误,当前请求无法被服务器理解
    • 401 Unauthorized 当前请求需要用户验证
    • 403 Forbidden 服务器已经理解请求,但是拒绝执行它
    • 404 Not Found:请求失败
  • 5XX服务器端错误:
  • 500 Internal Server Error 服务器遇到一个未曾预料的状况
  • 502 Bad Gateway 作为网关或者代理工作的服务器尝试执行请求时,从上游服务器接收到无效的响应。
  • 503 Service Unavailable 由于临时的服务器维护或者过载,服务器当前无法处理请求。

3. Http request的几种类型

GET POST PUT DELETE

4. 四种常见的POST提交数据方式

请求头中Content-Type来获取请求中消息主体用的是何种方式编码: 参考

  • application/x-www-form-urlencoded
  • multipart/form-data
  • application/json
  • text/xml

5. Http1.1和Http1.0的区别

  • Http1.0使用非持久连接;一个连接值传输一个请求/响应
  • Http1.1默认使用持久连接;支持以管道方式同时发送多个请求;增加身份认证(authentication);支持文件断点续传;增加缓存;在消息头增加Host域

身份认证HTTP Basic和Digest

6. Http怎么处理长连接

  • 响应头:Connection:keep-alive;keep-Alive:timeout=20
  • 在使用长连接的情况下,当一个网页打开完成后,客户端和服务器之间用于传输HTTP数据的 TCP连接不会关闭,如果客户端再次访问这个服务器上的网页,会继续使用这一条已经建立的连接。
  • Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件(如Apache)中设定这个时间。实现长连接要客户端和服务端都支持长连接。
  • Nginx代理常见的是客户端跟Nginx代理服务器使用HTTP1.1协议&长连接,而Nginx代理服务器跟后端服务器使用HTTP1.0协议&短连接。 参考

7. Cookie与Session的作用及原理

  • HTTP协议是无状态的协议
  • Session:在服务端保存的一种数据结构,用来跟踪用户的状态,该数据可以保存在集群,数据库,缓存,文件中,例如:Memcached。
  • Cookie:客户端保存用户信息的一种机制,用来记录用户的一些信息;也可以用来跟踪Session
  • 会话跟踪:如果第一次请求,会为其创建一个session,然后把sessionID发给客户端,保存到cookies中,客户端以后访问的时候就会带着这个sessionID

8. 负载均衡策略

  1. 轮询
  2. ip_hash
  3. 粘性策略
  4. 尽量无状态

9. Https原理,和Http区别

  • HTTP是运行在TCP之上,所有传输的内容都是明文(包括密码)
  • HTTPS是在应用层和传输层之间插入SSL/TLS进行加密
    • SSL(安全套接层Secure Sockets Layer)
    • TLS(安全传输层协议)

10. 对称加密,非对称加密

  • 对称加密:一方通过密钥将信息加密后,把密文传给另一方,另一方通过这个相同的密钥将密文解密,转换成可以理解的明文。(明文 <-> 密钥 <-> 密文)
  • 非对称加密:首先由一对key(private key私钥,public key公钥),你将public key分发给用户,该用户使用其加密,只有使用你的private key才能解密。故即使public key被别人获取,也无法解密。(MD5,SSH,HTTPS,TLS,电子证书,电子签名等)