一、TCP/IP分为四层:应用层、传输层、网络层、链路层。
1.应用层
应用层决定了向用户提供应用服务时的通信活动。
FTP(文件传输协议)和DNS(域名系统)域名系统提供域名到ip地址的解析服务、http协议都是处于该层。
2.传输层
传输层对上层应用层、提供处于网络连接中的两台计算机之间的数据传输。
传输层有两个不同的协议:TCP(传输控制协议)和UDP(用户数据报协议)、UDP不能保证数据无误的传输,协议不可靠。
3、网络层(IP)
用来处理网络上的数据包,数据包是网络传输的最小数据单位,该层规定了通过怎么样的路径到达对方计算机,并把数据包传送给对方。
与对方计算机之间通过多台计算机或者网络设备进行传输时,网络层所起的作用就是在众多的选项内选择一条传输路线。
4、链路层(数据链路层、网络接口层)
用来处理连接网络的硬件部分。包括控制操作系统、硬件的设备驱动、网卡,及光纤等物理课件部分。硬件上的范畴均在链路层的作用范围之内
二、TCP的三次握手
为了将数据准确无误的传递到目标处,TCP进行了三次握手,握手采用TCP的标志 -----SYN(synchronize)和ACK(acknowledgement)。
客户端首先发送一个带SYN标志的数据包给对方。接收端收到后,回传一个带有SYN/ACK标志的数据包以示传达确认信息,最后客户端再回传一个带ACK标志的数据包,代表握手结束。
三、HTTP协议
1.HTTP协议请求报文
请求报文是由请求方法、请求URI、协议版本、可选的请求首部字段和内容实体构成。
2.HTTP协议响应报文
响应报文是由协议版本、状态码以及结识状态码的短语,可选响应首部字段和实体组成的。
3.HTTP协议方法
GET:获取资源
用来请求访问已被URI标识的资源。制定的资源经服务器解析后返回响应内容,也就是说请求的资源是文本,那就保持原样返回。
POST:传输实体主体
虽然GET方法也能传输实体主体,但是一般不用GET方法进行传输,而是用POST,POST请求参数在body中,用户不可见,而get传输内容拼接在URL中,用户可见,安全性较差。
4、Cookie的状态管理
HTTP是无状态协议,他不对之前发审过的请求和响应的状态进行管理,也就是说,无法根据之前的状态进行本次的请求,比如登录态,为了解决这个问题,引入Coookie技术,Cookie技术通过在请求和响应报文中写入Cookie信息来控制客户端的状态。
Cookie会根据从服务端发送的响应报文内的一个叫Set-Cookie的首部字段信息,通知客户端保存Cookie,当下次客户端再往服务器发送请求时,客户端会自动在请求报文中假如Cookie值发送出去。
服务端发现客户端的Cookie后,会根据服务器记录,检查哪一个客户端发来的请求,最后得到之前的状态信息。
客户端和服务端Cookie交互流程:
5.HTTP状态码
2XX 成功
1)200 OK
2)204 No Content 请求处理成功,但是没资源返回
3)206 Partial Content 请求部分资源返回成功。
3XX 重定向
3XX结果表明浏览器需要执行某些特殊处理以正确请求
1)301 Moved PerManently 永久性重定向,表示资源被分配新的URI,要用新的URI访问。
2)302 found 临时性重定向,表示资源被分配新的URI,希望用户本次用新的URI访问,只是临时性的,已移动的资源对应的URL,捡来还有可能改变。
3)303 See Other 改状态码表示,请求的URI存在着另一个URI,应使用GET方法定向获取请求资源。
4)304 Not Modified 表示客户端发送附带条件的请求时,服务端允许请求访问资源,但是未满足条件的情况
4XX 客户端错误
1)400 Bad Request 表示报文中有语法错误。
2)401 Unauthorized 表示需要认证(BASIC认证或者DIGEST认证)
3)403 ForBidden 服务器资源禁止访问。
4)404 Not Found 服务器找不到资源。
5XX 服务器错误
1)500 Internal Server Error 表示服务器端在执行请求时发生了错误。
2)503 Service Unavailable 服务器超负载或者停机维护无法处理请求。
6.HTTP缺点
1)通信使用明文,没有加密,可能被窃听。(通过加密解决)
2)不验通信方的身份,因此可能遭遇伪装。(通过证书解决)
3)无法证明报文完整性,可能已经遭篡改。(通信时会发送内容和内容的hash值用来验证完整性)
7.HTTPS诞生
因为HTTP协议存在上面的三个问题,存在安全隐患,所以通过SSL(安全套接字)和HTTP协议组合使用,加密HTTP的通信内容,这被称为HTTPS(HTTP sercure 超文本传输安全协议)。
HTTP+加密+认证+完整性保护 = HTTPS
HTTP和TCP通信,变成HTTP和SSL通信,SSL和TCP通信。