一、TCP/IP
TCP/IP协议是一系列网络协议的总和,是个协议簇。它定义了电子设备如何连入因特网,以及数据如何在它们之间进行传输。TCP/IP协议通常被认是一个四层协议,每一层都呼叫它的下一层所提供的协议来完成自己的需求:
应用层 | 为网络排错,文件传输,远程控制和 Internet 操作提供具体的应用程序 常见协议: Telnet:远程管理、FTP:文本传输协议、TFTP:简单文件传输协议、 SMTP:发送邮件、POP3:接收邮件、 HTTP:超文本传输协议、HTTPS:加密超文本传输协议、 DNS:域名解析服务 |
---|---|
传输层 | 主要为两台主机上的应用程序提供端到端的通信,为网络提供了流量控制,错误控制和确认服务 TCP:传输控制协议;面向连接,可靠,建立虚链路,确认和窗口流量控制机制 UDP:用户数据报协议;是无序的,不可靠的,无连接,低开销,无确认,没有窗口和流量控制 |
网络层 | 处理分组在网络中的活动,如分组的选路;提供独立于硬件的逻辑寻址,实现物理地址与逻辑地址的转换 IP:网际协议 ICMP:因特网控制报文协议 ARP:地址解析协议,将IP地址映射为物理地址 RARP:逆向ARP,将物理地址映射为IP地址 IGMP协议:Internet组管理协议 |
数据链路层 | 称数据链路层或网络接口层,包括设备驱动程序和网络接口卡,各种物理通信网络接口。 |
二、数据包
在 TCP/IP协议中数据先由上往下将数据装包,然后由下往上拆包,进行数据传递。过程如下:
三、三次握手和四次挥手
三次握手:建立连接时(C/S)
第一次握手:建立连接时,Client将标志位SYN置为1,随机产生一个值seq=x,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确认
第二次握手:Server收到数据包后由标志位SYN=1知道Client请求建立连接,Server将标志位SYN和ACK都置为1,ack=x+1,随机产生一个值seq=y,并将该数据包发送给Client以确认连接请求,Server进入SYN_RCVD状态。
第三次握手:Client收到确认后,检查ack是否为x+1,ACK是否为1,如果正确则将标志位ACK置为1,ack=y+1,并将该数据包发送给Server,Server检查ack是否为y+1,ACK是否为1,如果正确则连接建立成功,Client和Server进入ESTABLISHED状态,完成三次握手,随后Client与Server之间可以开始传输数据了。
四次挥手:终止TCP连接
第一次挥手:Client发送一个FIN,用来关闭Client到Server的数据传送,Client进入FIN_WAIT_1状态。
第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),Server进入CLOSE_WAIT状态。
第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。
四、HTTP&HTTPS
1、HTTP
Hyper Text Transfer Protocol,超文本传输协议,一种建立在TCP上的无状态连接,基本工作流程是客户端发送一个HTTP请求,说明要访问的资源和请求动作,服务端收到请求后做出相应的动作访问服务器资源,最后发送HTTP响应把结果返回给客户端。
这里提一下HTTP常见状态码及含义
1xx : 信息响应类,表示接收到请求并且继续处理 | |
---|---|
100 | Continue -- 继续。客户端应继续其请求 |
101 | Switching Protocols -- 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议 |
2xx : 处理成功响应类,表示动作被成功接收、理解和接受 | |
200 | OK -- 请求成功。一般用于GET与POST请求 |
201 | Created -- 已创建。成功请求并创建了新的资源 |
202 | Accepted -- 已接受。已经接受请求,但未处理完成(异步任务) |
203 | Non-Authoritative Information -- 非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本 |
204 | No Content -- 无内容。服务器成功处理,但未返回内容 |
205 | Reset Content -- 重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域 |
206 | Partial Content -- 部分内容。服务器成功处理了部分GET请求 |
3xx : 重定向响应类,为了完成指定的动作,必须接受进一步处理 | |
301 | Moved Permanently -- 永久移动, 请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替 |
302/307 | Found -- 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI;临时重定向 |
304 | Not Modified -- 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在 指定日期之后修改的资源 |
305 | Use Proxy -- 使用代理。所请求的资源必须通过代理访问 |
4xx : 客户端错误,客户请求包含语法错误或者是不能正确执行 | |
400 | Bad Request -- 用户发出的请求有错误,服务器没有进行新建或修改数据的操作,该操作是幂等的 |
401 | Unauthorized -- 表示用户没有权限(令牌、用户名、密码错误) |
403 | Forbidden -- 表示用户得到授权(与401错误相对),但是访问是被禁止的 |
404 | Not Found -- 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置"您所请求的资源无法找到"的个性页面 |
5xx : 服务端错误,服务器不能正确执行一个正确的请求 | |
500 | Internal Server Error -- 服务器内部错误,无法完成请求 |
501 | Not Implemented -- 服务器不支持请求的功能,无法完成请求 |
502 | Bad Gateway -- 作为网关或者代理工作的服务器尝试执行请求时,从远程服务器接收到了一个无效的响应 |
503 | Service Unavailable -- 由于超载或系统维护,服务器暂时的无法处理客户端的请求 |
504 | Gateway Time-out -- 充当网关或代理的服务器,未及时从远端服务器获取请求 |
505 | HTTP Version not supported -- 服务器不支持请求的HTTP协议的版本,无法完成处理 |
2、HTTPS
HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。
客户端在使用 HTTPS 方式与 Web 服务器通信时过程如下:
客户使用HTTPS的 URL 访问 Web 服务器,请求与 Web 服务器建立 SSL 连接。Web 服务器收到客户端请求后,会将网站的证书信息(证书中包含公钥)传送一份给客户端。客户端的浏览器与 Web 服务器开始协商 SSL 连接的安全等级,也就是信息加密的等级。客户端的浏览器根据双方同意的安全等级,建立会话密钥,然后利用网站的公钥将会话密钥加密,并传送给网站。Web 服务器利用自己的私钥解密出会话密钥。Web 服务器利用会话密钥加密与客户端之间的通信。
3、HTTP和HTTPS的比较
HTTPS协议需要到 ca 申请证书,免费证书较少,故需要一定费用。
HTTP连接简单且无状态,传输信息是明文传输,HTTPS由HTTP+SSL加密协议构建 ,加密传输,更安全
连接方式不同,且HTTP使用80端口, HTTPS使用443端口
以上!