对HTTP、HTTPS、TCP、UDP协议的理解摘要

HTTP协议

HTTP全称是HyperText Transfer Protocal,即:超文本传输协议,HTTP连接最显著的特点是客户端发送的每次请求都需要服务器回送响应,在请求结束后,会主动释放连接。从建立连接到关闭连接的过程称为“一次连接”。

一、HTTP请求与响应的内容

图片

二、HTTP协议格式

一个请求包含以下内容:请求行、请求头、请求体。
1.请求行:包含请求方法、请求统一资源标识符(URI)、HTTP协议版本
GET /XXServer/resources/images/1.jpg HTTP/1.1
2.请求头
图片

  • Host: 目标服务器的网络地址
  • Accept: 让服务端知道客户端所能接收的数据类型,如text/html /
  • Content-Type: body中的数据类型,如application/json; charset=UTF-8
  • Accept-Language: 客户端的语言环境,如zh-cn
  • Accept-Encoding: 客户端支持的数据压缩格式,如gzip
  • User-Agent: 客户端的软件环境,我们可以更改该字段为自己客户端的名字,比如QQ music
    v1.11,比如浏览器Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_5)
    AppleWebKit/600.8.9 (KHTML, like Gecko) Maxthon/4.5.2
  • Connection: keep-alive,该字段是从HTTP1.1才开始有的,用来告诉服务端这是一个持久连接,“请服务端不要在发出响应后立即断开TCP连接”。关于该字段的更多解释将在后面的HTTP版本简介中展开。
  • Content-Length:body的长度,如果body为空则该字段值为0。该字段一般在POST请求中才会有。POST请求的body请求体也有可能是空的,因此POST中Content-Length也有可能为0。
  • Cookie: 记录者用户信息的保存在本地的用户数据,如果有会被自动附上。

值得一提的是,在iOS中当你发送一个任意请求时,不管你愿不愿意,NSURLRequest都会自动帮你记录你所访问的URL上设置的cookie。在iOS中用NSHTTPCookieStorage表示,是一个单例。通过

NSHTTPCookieStorage *cookieJar = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie *cookie in [cookieJar cookies]) {
 NSLog(@"%@", cookie);
}

可以获取目前被自动保存的所有cookie。

了解所有请求头请看这里HTTP知识工具文
那在iOS中如何设置添加这些field呢?可以使用-[NSMutableURLRequest addValue: forHTTPHeaderField:]方法,获取当前请求已经设置的field可以用-[NSURLRequest allHTTPHeaderFields]。也就是我们可以通过以上接口定制我们所需要的请求头,但是有些field是不能改的,我们看一下iOS的描述
图片
这几个是不能改的。
3.请求体
真正需要发给服务端的数据,在使用POST-multipart上传请求中请求体就是上传文件的二进制NSData类型数据;在GET请求中请求体为空;在普通的POST请求中请求体就是一些表单数据。在iOS中一般用NSURLRequest与NSMutableURLRequest的HTTPBody属性表示,添加body用-[NSMutableURLRequest setHTTPBody:]。
4.响应状态行
状态行是服务端返回给客户端的状态信息,包含HTTP版本号、状态码、状态码对应的英文名称。
典型的正确状态行:

HTTP/1.1 200 OK

5.响应头与响应实体
这部分与请求部分差异不大,响应头的字field会有稍许不同

HTTPS

HTTPS通信原理:

HTTPS(Secure Hypertext Transfer Protocol)安全超文本传输协议 它是一个安全通信通道
HTTPS是HTTP over SSL/TLS,HTTP是应用层协议,TCP是传输层协议,在应用层和传输层之间,增加了一个安全套接层SSL/TLS:
SSL (Secure Socket Layer,安全套接字层)
TLS (Transport Layer Security,传输层安全协议)
SSL使用40 位关键字作为RC4流加密算法。

HTTPS的作用

  • 内容加密,建立一个信息安全通道,来保证数据传输的安全;
  • 身份认证,确认网站的真实性 ;
  • 数据完整性,防止内容被第三方冒充或者篡改。

Https和Http的区别

  • https协议需要到CA申请证书。 http是超文本传输协议,信息是明文传输;https 则是具有安全性的ssl加密传输协议。
  • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • http的连接很简单,是无状态的;HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。
  • http默认使用80端口,https默认使用443端口

TCP:传送控制协议(Transmission Control Protocol)

UDP:用户数据报协议 (UDP:User Datagram Protocol)

TCP HTTP UDP三者的关系如下:

TCP/IP是个协议簇,可分为四个层次:网络接口层、网络层、传输层和应用层。
在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。
在传输层中有TCP协议与UDP协议。
在应用层有HTTP,FTP、TELNET、SMTP、DNS等协议。

本文为学习笔记摘要,参考文章如下:
链接:https://www.jianshu.com/p/e6ac7f1e3f88
链接:https://blog.csdn.net/WHB20081815/article/details/67640804

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值