客户端发起请求 -> DNS域名解析 –> 发起TCP的三次握手 –> 建立TCP连接后发起http请求 –> 服务器响应http请求,浏览器得到html代码 –> 浏览器解析html代码,并请求html代码中的资源(如JavaScript、css、图片等) –> 浏览器对页面进行渲染呈现给用户。
第一次握手:建立连接时,客户端发送SYN包(SYN=1)到服务器,并进入SYN_SEND状态,等待服务器确认;
第二次握手:服务器收到SYN包,必须确认客户的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ACK=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
第一次挥手:Client发送一个FIN=1的TCP报文段到Server,表示自己没有数据要发送了,想断开连接。
第二次挥手:Server收到上面的报文段后,发送ACK确认已收到。若Server还有需要发送的数据,继续发送完毕。
第三次挥手:当Server也没有要继续发送的数据了,发送一个FIN=1的TCP报文段到Server,表示自己没有数据要发送了,将断开连接,并且断开Server到Client的连接,释放相应的资源。
第四次挥手:Client收到Server的FIN=1的TCP报文段,发送ACK确认消息已经收到。但是,由于这个时候Server已经断开了到Client的连接。因此,这个ACK事实上是处于无人认领的状态的。Client做完5中的事情后,等待一段时间,没啥音信了,就认为对面已经正确关闭了,自己也断开了到Server的TCP连接。
IP协议:实现网络互连。使参与互连的性能各异的网络从用户看起来好像是一个统一的网络。
ARP协议:完成IP地址到MAC地址的映射。
RARP:使只知道自己硬件地址的主机能够知道其IP地址。
ICMP:允许主机或路由器报告差错情况和提供有关异常情况的报告。从而提高IP数据报交付成功的机会。
一个HTTP请求报文由请求行(request line)、请求头部(header)、空行和请求数据4个部分组成
1.请求行由请求方法字段、URL字段和HTTP协议版本字段3个字段组成,它们用空格分隔。
2.请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号“:”分隔。请求头部通知服务器有关于客户端请求的信息。
3.最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。
4.请求数据不在GET方法中使用,而是在POST方法中使用。
HTTP响应也由三个部分组成,分别是:状态行、消息报头、响应正文。