写在前面:最近整理东西有点上瘾呢,难道这就是创作的快感吗?(哈哈哈哈哈)网络协议,在大学专门开了一门课,我们的叫《网络协议分析》,宝宝记忆好好哦~~~老师上课全英文课件 ~~
iOS的TCP/IP协议族整理参照了http://www.cocoachina.com/ios/20160223/15347.html
感谢作者的无私分享~~
TCP/IP
TCP/IP(Transmission Control Protocol/Internet Protocol)的简写,传输控制协议/互联网络协议)协议。
TCP/IP(传输控制协议/网间协议)是一种网络通信协议,它规范了网络上的所有通信设备,尤其是一个主机与另一个主机之间的数据往来格式以及传送方式。 通常我们说TCP/IP是说TCP/IP协议族,它是一组协议的代名词。包含了很多别的协议。
HTTP协议
HTTP(HyperText Transfer Protocol),超文本传输协议,是互联网上应用最广泛的一种网络协议。它规定了客户端—服务器之间的数据传输格式。
HTTP优点
- 简单快速:HTTP协议简单,通信速度很快
- 灵活:允许传输任意类型的数据
- 短连接:每次连接只处理一个请求,服务器对客户端的请求作出响应后,马上断开连接.这种方式可以节省传输时间.
HTTP协议的使用
1 请求 :客户端向服务器索要数据,
一个完整的http请求包含:请求行,请求头,请求体三个部分。
- 请求行:包含请求方法,请求资源路径
- 请求头:客户端的环境描述
- 请求数据:客户端发给服务器的具体数据,如图片,文件等。
2 响应:服务器返回客户端想要的数据
与请求对应,响应也有三部分:响应行,响应头,响应内容。
响应行:包含http协议版本,状态码,状态英文名称。
"HTTP/1.1 200 OK"
200就是请求成功
- 1xx 消息 比如100 Continue
- 2xx成功
- 3xx 重定向
- 4xx客户端请求错误 比如常见的404 Not Found
- 5xx和6xx服务器错误 500 Internal Server Error 600 Unparseable Response Headers
发送http请求
常见方式有两种:
- Apple原生:
1 NSURLConnection:用法简单,古老经典的一种方案.
2 NSURLSession:iOS7以后推出的技术,功能NSURLConnection更加强大.
3 CFNetWork:NSURL的底层,纯C语言,一般不用. - 第三方框架:
AFNetWorking(OC)
之前还有ASIHttp 12年停止更新,所以现在基本都用AFNetWorking。
Alamofire(swift)
HTTP请求方法
在HTTP/1.1协议中,定义了8种发送http请求的方法:GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT、PATCH
增:PUT
删:DELETE
改:POST
查:GET
最常用的是GET和POST方法。因为GET和POST可以实现上述所有操作,除此以外HEAD请求使用频率也比较高;
GET、POST区别
- GET请求:用于从服务端获得数据,请求参数拼接在URL后面,所以安全性相对不是很高。
- POST请求:给服务器数据,比如上传文件。请求参数在http的body中,所以相对更安全。
TCP
TCP(Transmission Control Protocol),传输控制协议,提供可靠的,面向连接的网络数据传递服务。比如上传文件需要TCP.
TCP工作原理(三次握手)
TCP的连接建立过程又称为TCP三次握手:
- 首先发送方主机向接收方主机发起一个建立连接的同步(SYN)请求;
- 接收方主机在收到这个请求后向发送方主机回复一个同步/确认(SYN/ACK)应答;
- 发送方主机收到此包后再向接收方主机发送一个确认(ACK),此时TCP连接成功建立.
三次握手示意图:
UDP(用户数据报协议)
UDP 提供无连接的网络服务,不可靠的网络数据传输服务。经常与TCP对比。(宝宝又想起大学的考试了~~~~)比如可以用于语言通话。
TCP,UDP都是传输层协议,是OSI(七层模型)中最重要,最关键的一层。