巩固web基础从http开始
我目前是在职人员,工作中几乎都是套框架,也就是码农(搬砖的)。web基础很多都忘记了,css3除了常用的,记得也是模凌两可。希望借助这次的讨论学习和百度前端学院的伙伴们能寻找到更好的学习方法。一起成长进步。
既然是立flag,那么我在这里 定个目标,66天里面把web基础打牢。
第一天先从http协议开始,http是超文本传输协议,在客户端与服务端之间传输信息,定义客户端和服务器间交流的语言的协议。
https是一种更安全的传输协议,在协议上加了一层密码,不容易被黑客攻击,更加安全。多用于支付页面,政府机构页面,公安局页面,银行……;
http请求阶段,当我们在浏览器输入一个URL时,浏览器会在域名系统服务器(DNS)去查找IP所在的服务器的实际地址,服务器接收到请求时,客户端和服务端已经产生了链接,http请求阶段结束。
http响应阶段,服务器接收到请求后,根据路径,找到相应的项目,立即把一些响应信息放在响应头中,通过http发送给客户端,同时进行数据整理,整理出来的数据,通过http发送给客户端,直到客户端接收完毕;
然后是浏览器渲染阶段,浏览器拿到从服务器传输过来的数据文件;先遍历HTML,形成DOM树,代码从上到下解析,形成CSS树;DOM树和CSS树重新组成render树;浏览器进行描绘和渲染;
浏览器在给服务器传输数据之前,有三次握手,握手成功之后,才可以传输数据,这涉及到TCP/IP提供的可靠的连接服务
TCP/IP: 传输控制协议和因特网互连协议是定义数据如何传输的通信协议,采用三次握手确认建立一个连接:
位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)
第一次握手:开始建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态,表示我可以建立连接;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手, 完成三次握手,客户端与服务器开始传送数据。
当数据传输完成,有四次挥手;
第一次挥手:客户端会发送一个FIN码告诉服务器,数据传输完毕了;
第二次挥手:服务器收到这个FIN. 它发回一个ACK,确认序号为收到的序号+1。和SYN一样,一个FIN将占用一个序号,用来告诉客户端可以把数据通道关闭了;
第三次挥手:服务器关闭与客户端的连接,发送一个FIN给客户端;
第四次挥手:客户端发回ACK报文确认,并将确认序号设置为序号加1。
以上就是http的三次握手和四次挥手;三次握手和四次挥手的好处是确保数据的安全和完整。