网址
随意举个例子:http://www.baidu.com/images/32324.jpg
- 『http』是遵守的协议
- 『www.baidu.com』域名,也就是主机的地址
- 『images/32324.jpg』 资源目录
网络模型
应用层(HTTP)、表示层、会话层、传输层(TCP)、网络层(IP)、数据链路层、物理层。
IP协议
- IP协议的功能:明确规定Host之间(资料包)数据包的传输方式
- 数据包:一段二进制数据,其中包含了发送源主机和目的主机的信息;如果数据包大于允许传输的最大尺寸,则会拆分成多个数据包(Fragmentation数据分片)
- 特点:(尽力服务)提供有效服务并尽力传输(数据包有可能被丢失,也有可能被重复传送导致目的主机接收同样的数据包)
*IP地址:网络中的每个主机都分配有地址,数据包中包含地址信息
IP协议报头结构
TCP协议
- TCP是基于IP层的协议。但是TCP是可靠的、有序的、有错误检查机制的基于字节流传输的协议。当两个设备上的应用通过TCP来传递数据的时候,总能够保证目标接收方收到的数据的顺序和内容与发送方所发出的是一致的。
- HTTP是典型的TCP应用。用户浏览器与web服务器建立连接后,浏览器可以通过连接发送服务请求,web服务器可以通过同样的连接对请求作出响应。
- 同一个host主机可以有多个应用同时使用TCP协议。TCP用不同的端口来区别应用。作为连接的两端,发送源和接受目标哦分别拥有自己的IP地址和端口号。凭借这样一对IP地址和端口号,就可以唯一标识一个连接。
TCP报文
- 主机之间传输的数据流一般先会被分块,再转化成TCP的报文段,最终会生成IP数据包中的payload载荷数据。
- 每个TCP报文段都有header和对应的载荷payload。payload信息就是待传输的数据块。TCP报文段的header信息中主要包含的是源和目标端口号。
TCP连接:三次握手
- 第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。
- 第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。
-
第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据。
HTTP请求类型
- GET:从服务器端请求特定资源
- POST:上传数据(表单、文件)到服务器
- GET和POST都可以上传和请求,但是GET会在网址上明文体现出上传数据,而POST会有一个请求体
- HEAD:向服务器端索要和GET请求一致的response,不包含具体内容
- PUT、DELETE、TRACE、CONNECT、OPTIONS
HTTP请求头Header
HTTP请求Header重要内容
HTTP响应Response
如何让应用使用HTTP协议
- 在info.plist文件中关闭HTTPS
- App Transport Security Settings
- Allow Arbitrary Loads 值为YES