HTTP

怎么才叫熟悉http协议?

“熟悉http协议”,肯定很多IT小伙伴都在招聘岗位上看得到过,但是怎么才叫熟悉http协议呢?抽空梳理了一下,也算是对这一部分知识的笔记吧!

可能对于大部分人来说,网络web编程就是使用一些第三方库来进行请求和响应的处理,再多说一点就是这个URI要使用POST方法,对于携带的数据需要处理成为formdata

基础知识 #

Q1: HTTP协议是什么?用来干什么?

HTTP协议是基于TCP/IP协议的应用层协议,主要规定了客户端和服务端之间的通信格式。主要作用也就是传输数据(HTML,图片,文件,查询结果)。

#网络分层 #

互联网的实现分成了几层,如何分层有不同的模型(七层,五层,四层),这里按五层模型来解释:

(靠近用户)应用层 < 传输层 < 网络层 < 链接层 < 物理层(靠近硬件)

层级 作用 拥有协议
物理层 传送电信号0 1
数据链路层 定义数据包;网卡MAC地址;广播的发送方式; Ethernet 802.3; Token Ring 802.5
网络层 引进了IP地址,用于区分不同的计算机是否属于同一网络 IP; ARP; RARP
传输层 建立端口到端口的通信,实现程序时间的交流,也就是socket TCP; UDP
应用层 约定应用程序的数据格式 HTTP; FTP; DNS

每一层级,都是解决问题而诞生的,也就是他们各自作用对应的问题,推荐参考资料中的“互联网协议入门”。

#HTTP通信流程 #

http通信传输流

#拓展–三次握手和四次挥手 #

经常在其他地方看到这些,一直不知道了解这部分有什么用,但是syn Flood攻击,恰恰是利用了TCP三次握手中的环节。利用假IP伪造SYN请求,服务端会多次尝试发送SYN-ACK给客户端,但是IP并不存在也就无法成功建立连接。在一定时间内伪造大量这种请求,会导致服务器资源耗尽无法为正常的连接服务。(注:服务器SYN连接数量有限制,SYN-ACK超时重传机制)

三次握手流程:

  1. The client requests a connection by sending a SYN (synchronize) message to the server.
  2. The server acknowledges this request by sending SYN-ACK back to the client.
  3. The client responds with an ACK, and the connection is established.

TCP three-way handshake

...

访问量 访客数