http 常被问到的基本知识
- UDP与TCP基本区别
- TCP要求系统资源较多,面UDP较少
- TCP采用
流模式,UDP采用数据报模式 - TCP保证数据的正确性,UDP可能丢包
- TCP保证数据顺序,UDP不保证
- 使用时socket()参数不同
- HTTP请求过程:
- 应用层(HTTP数据)【发送端】
- 传输层(TCP首部 + HTTP数据)
- 网络层(IP首部 + TCP首部 + HTTP数据)
- 链路层(以太网首部 + IP首部 + TCP首部 + HTTP数据)
- 接受端再一层层把对应的首部消去
- DNS简介
- 客户端向DNS进行域名查询请求,DNS服务器告知客户端Web服务器的IP地址,客户端与服务器进行通信
- 如果域名正好被服务器缓存,那么直接返回,否则要根据是几级域名,进行查找。
- 浏览器返回,是否会再次请求?是否会被浏览器主动 cache? 是否只支持 url 编码?请求参数是否会被完整的保存在浏览器历史记录里?请求参数长度限制?参数类型只支持 ASCII?
- GET 在浏览器回退时是无害的,而 POST 会再次提交请求。
- GET 请求会被浏览器主动 cache,而 POST 不会,除非手动设置。
- GET 请求只能进行 url 编码,而 POST 支持多种编码方式。
- GET 请求参数会被完整保留在浏览器历史记录里,而 POST 中的参数不会被保留;GET 产生的 URL 地址可以被 Bookmark,而 POST 不可以。
- GET 请求在 URL 中传送的参数是有长度限制的,而 POST 么有。
- GET 比 POST 更不安全,因为参数直接暴露在 URL 上,所以不能用来传递敏感信息;GET 参数通过 URL 传递,POST 放在 Request body 中。
- 对参数的数据类型,GET 只接受 ASCII 字符,而 POST 没有限制。
- GET 与 POST 请求产生几个数据包?其他的不同?
- GET 产生一个 TCP 数据包;POST 产生两个 TCP 数据包。
- GET 产生一个TCP数据包, 把header与data一起发过去, 等待服务器响应
- POST 时, 浏览器先发送header, 服务器响应100 continue, 浏览器再发送data, 等待服务器响应(非FF), 网络环境差的时候, 两次包的TCP在验证数据完整性上有非常大的优势
- GET请求的数据会附在URL之后,而POST提交的数据 是在HTTP包的包体中
- 传输数据大小不同
- 安全性不同,通过GET提交的数据,会明文出现在URL上
- GET请求是幂等性的,所以不能用GET请求做数据的增删改有副作用的操作;因为是幂等的,在网络不好的隧道中会尝试重试,用GET请求可能会造成重复操作。
- ARP 解析地址的协议,可以通过IP地址反查出对应的MAC地址
- CONNECT 使用隧道协议进行TCP通信,主要使用SSL(安全套接层)和TLS(传输层安全)协议把通信内容加密后以过网络隧道传输
- 持久链接:keep-alive,管线化