作者:西瓜橙子雨
链接:https://www.nowcoder.com/discuss/18270?type=0&order=0&pos=11&page=14
来源:牛客网

计算机网络


HTTP协议

基于TCP协议的应用层协议

HTTP是一个普通用在浏览器和web服务器之间进行数据交换的 文本 协议

HTTP协议的ETAG响应头主要用于信息的过期验证

 

 

HTML错误代码

(1)  常见错误代码:

200服务器成功返回了网页,成功处理了请求

304未修改,自从上次请求后,请求的页面未被修改过,此时服务器不会返回网页内容,节省带宽和开销

404请求的网页不存在

500服务器内部错误

503服务器暂时不可用(超载、停机维护),通常只是暂时状态

(2)  1xx:临时响应,服务器端响应成功, 等待请求者进一步操作

(3)  2xx:响应成功  

202接受请求,未处理

204处理了请求,但没有返回任何内容

(4)  3xx重定向,要完成响应,服务器需要进一步处理

301网页已被永久移动到新位置

302临时移动到新位置

305要求只能使用代理才能访问

(5)  4xx请求错误

400不理解请求语法

401要求身份验证,先登陆才能请求

403禁止访问,服务器拒绝请求

405请求中的方法被禁用

408请求超时

(6)  5xx服务器在处理请求时内部发生错误,来自服务器本身的错误

501服务器不具备完成该请求的功能

502服务器作为网关或代理,从上游服务器收到无效响应

504网关超时

505  HTTP版本不支持

TCP/IP与UDP

TCP与UDP

TCP面向连接、可靠的数据传输,有拥塞控制和流量控制,大量数据,速度慢

UDP非连接,不可靠的数据传输,少量数据,速度快

TCP建立连接的三次握手

详细过程和状态变化

为什么要三次?

TCP关闭连接的四次挥手

FIN- ->

<--FINACK

ß FIN

FINACK-->

如何提高UDP的可靠性

应用层 实现超时重传,客户端发送一个包,服务器返回一个包表示收到,如果客户端超过一定时间没有收到该包,就需要重传


备用

 

SOCKET编程

 

 

当recv函数在接受数据时是阻塞的,当返回值<0,说明连接出错

当返回值=0,表示对端关闭了连接

返回值>0,接受到的数据的大小

 

TCP/IP分层,各层作用

应用层:为操作系统、应用程序提供访问网络的接口(Telnet、FTP、HTTP、SNMP、DNS域名解析)

(表示层)

(会话层)

传输层:两点之间的根据使用的协议(TCP、UDP),传输相应数据报文,

网络层:整个网络的传输路径选择,路由(IP、RIP)

网络访问层:数据链路层、物理层的结合,数据链路层相邻节点之间数据帧传输,物理层就是光纤上比特级的数据传输。

PING操作的原理

使用ICMP,在IP主机、路由器之间传递控制消息

网络层的协议

IP协议 根据IP地址决定转发、路由的协议

ICMP本质理解为带差错报告的IP协议,在主机和路由器之间传递控制信息(网络通不通,主机可不可达,路由可不可达到)

ARP:将IP地址转化为MAC地址

RARP:物理地址转为IP地址

RIP

传输层的协议

TCP

UDP

SPX

应用层协议

HTTP

SMTP:简单邮件传输协议

DNS:

Telnet

FTP:文件传输协议

WWW:

NFS: 网络文件系统

DNS的完整流程(域名->IP地址)

DNS采用 分布式 的域名系统,减少故障发生

当一个应用需要把主机名解析为IP地址时,该应用程序就会调用解析程序,把待解析的域名放在DNS请求报文中,以 UDP数据报 方式发送给本地域名服务器,本地服务器在查找域名后,把对应的IP地址放在回答报文中返回,应用程序获得目的主机的IP地址后即可进行通信。若本地域名服务器不能解析该域名,则向上级域名服务器继续发送查询请求,直到可以解析为止。

 

备用

HTTP1.0/1.1区别

HTTP1.1中才有 cache-control响应头,主要用于控制信息在浏览器的缓存

1.  HTTP 1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求

缺陷:访问一个包含有许多图像的网页文件的整个过程包含了多次请求和响应,每次请求和响应都需要建立一个单独的连接,每次连接只是传输一个文档和图像,器端每次建立和关闭连接却是一个相对比较费时的过程,并且会严重影响客户机和服务器的性能

2.  HTTP 1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟

HTTP 1.1还允许客户端不用等待上一次请求结果返回,就可以发出下一次请求,但服务器端必须按照接收到客户端请求的先后顺序依次回送响应结果

HTTP 1.1还提供了Host、身份认证、状态管理和Cache缓存等机制相关的请求头和响应头