计算机网络是计算机科学与技术专业的必修课,也是移动端,前端,后端都会涉及并用到的知识点,可想而知它的重要性。所以它也成为了iOS面试中经常被问及的问题。准备面试的话,网络相关的知识点一定不能错过。这里总结了一些我认为有用的和最近面试遇到的网络相关知识点。
去年写过一篇《图解TCP/IP》总结的文章,也可以对着看下。
计算机网络是如何分层的
网络有两种分层模型,一种是ISO(国际标准化组织)制定的OSI(Open System Interconnect)模型,它将网络分为七层。一种是TCP/IP的四层网络模型。OSI是一种学术上的国际标准,理想概念,TCP/IP是事实上的国际标准,被广泛应用于现实生活中。两者的关系可以看这个图:
注:也有说五层模型的,它跟四层模型的区别就是,在OSI模型中的数据链路层和物理层,前者将其作为两层,后者将其合并为一层称为网络接口层。一般作为面试题的话都是需要讲出OSI七层模型的。
各个分层的含义以及它们之间的关系用这张图表示:
Http协议
http协议特性
- HTTP 协议构建于 TCP/IP 协议之上,是一个应用层协议,默认端口号是 80
- 灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
- 无状态:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。
- 无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传。
请求方法
-
GET:请求获取Request-URI标识的资源,请求参数附加在url上,明文展示。
-
POST:在Request-URI所标识的资源后附加新的数据,常用于修改服务器资源或者提交资源到服务器。POST请求体是放到body中的,可以指定编码方式,更加安全。
-
HEAD:请求获取由Request-URI所标识的资源的响应消息报头。
-
PUT:请求服务器存储一个资源,并用Request-URI作为其标识。
-
DELETE:请求服务器删除Request-URI所标识的资源。
-
TRACE:请求服务器回送收到的请求信息,主要用于测试或诊断。
-
OPTIONS:请求查询服务器的性能,或者查询与资源相关的选项和需求。
请求和响应报文
以该链接为例:zhangferry.com/2019/08/31/…
在Chrome查看其请求的Headers信息。
General
这里标记了请求的URL,请求方法为GET。状态码为304,代表文件未修改,可以直接使用缓存的文件。远程地址为185.199.111.153:443,此IP为Github 服务器地址,是因为我的博客是部署在GitHub上的。
除了304还有别的状态码,分别是:
200 OK
客户端请求成功301 Moved Permanently
请求永久重定向302 Moved Temporarily
请求临时重定向304 Not Modified
文件未修改,可以直接使用缓存的文件。400 Bad Request
由于客户端请求有语法错误,不能被服务器所理解。401 Unauthorized
请求未经授权。这个状态代码必须和WWW-Authenticate报头域一起使用403 Forbidden
服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因404 Not Found
请求的资源不存在,例如,输入了错误的URL500 Internal Server Error
服务器发生不可预期的错误,导致无法完成客户端的请求。503 Servic