​​ iOS面试题(二十七)网络---HTTP协议

9.网络

  • HTTP协议(什么是HTTP,HTTP当中的get和post有什么区别)
  • HTTPS与网络安全(HTTPS连接建立流程是什么,它与安全又有怎么的关系呢)
  • TCP/UDP(TCP连接建立的三次握手,四次挥手以及UDP和长链接之间都有怎样的关系和含义呢)
  • DNS解析
  • Session/Cookie

HTTP: 超文本传输协议(HyperText Transfer Protocol)
你是怎么理解HTTP的?关于HTTP协议包含哪些内容呢?

超文本传输协议。

  • 包含请求/响应报文(具体说出报文包含的字段)。
  • 连接建立流程
  • HTTP的特点

请求报文 具体组成

注意:
1、get请求没有实体主体。
2、post请求实体主体。

响应报文 具体组成

HTTP的请求方式有哪些?

1.GET:从服务器获取一段内容,不包含请求体
2.POST:使用客户端提供的数据更新实体
3.HEAD:获取响应的元数据而无需检索响应的全部内容
4.PUT:使用客户端提供的数据添加实体
5.DELETE:使用客户端提供吧的请求体来删除实体

 

GET和POST请求方式的区别?

1.Get从服务器获取数据,Post向服务器发送数据
2.Get将参数拼接到URL后面,Post将请求参数放到Body里面
3.Get传送数据量小,Post传送数据量不受限制
4.Get安全性低,Post安全性高

从语义的角度来回答(RFC官方文档)

GET:获取资源,安全的,幂等的,可缓存的

POST:处理资源,非安全的,非幂等的,不可缓存的

安全性:不应该引起server端的任何状态变化。常见的安全性的方式:GET, HEAD, OPTIONS;

幂等性:同一个请求方法执行多次和执行一次的效果完全相同  PUT,DELETE

可缓存性:请求是否可以被缓存(GET, HEAD)

了解哪些状态码,他们的含义是什么?



连接建立流程


 

HTTP请求是建立在TCP通道上的。

三次握手:

  • 客户端发送一个同步报文
  • 服务端收到以后,发送给客户端一个同步确认报文
  • 客户端收到以后,向服务端发送一个确认报文

收发数据
四次挥手:

  • 客户端发送一个终止报文
  • 服务端收到以后,发送给客户端一个确认报文

此时,由客户端服务端的连接断开了。
但是,服务端还可能向客户端发送数据。

  • 还需服务端客户端发送终止报文
  • 客户端服务端发送确认报文

HTTP特点

  • 无连接
    指的是HTTP有一个建立连接释放连接的过程。
    通过HTTP持久连接方案,来解决无连接
  • 无状态
    指的是同一个用户发送多次HTTP请求,服务端是不知道是同一个用户的。
    通过Cookie/Session方案,来解决无状态

HTTP持久连接

  • 非持久连接:每发送一次HTTP响应,都要重新建立一个TCP通道,经历三次握手四次挥手
  • 持久连接:多个HTTP响应都在一个TCP通道上,只有经过一定时间才会重新建立一个新的TCP通道
  • HTTP为了提升请求响应的效率,所以才有了持久连接这个方案

HTTP持久连接头部字段

  • Connection : keep-alive 客户端期许采用持久连接
  • time: 20 持久连接需要持续多长时间,20S内如果再次发起同一个域名或者IP的请求,可以 复用TCP通道
  • max: 10 最多可以支持多少个HTTP请求和响应对

怎样判断一个请求是否结束?
       一个TCP上有多个HTTP请求,判断前一个是否结束很关键。

  • 请求和响应报文都有头部字段,在响应报文的头部字段中会涉及到
    Content-length: 1024
    在我们发送请求,server回复时,会携带响应数据的大小,就是Content-length,当客户端所接收的字节数到达这个值时,说明这个HTTP请求响应已经全部接收了,意味着结束

  • POST请求时,Server端返回往往是多次响应返回给这些数据的,可以通过头部字段
    chuked: 最后一个块是空chuked
    来判断一个请求是否结束
    当有多个块通过HTTP的TCP连接传输给客户端时,每个报文都会带有一个chuked字段,而最后一个块,它是一个空的chuked,可以根据chuked是否为空来判断上一个请求是否结束

Charles查尔斯小瓶子(网络调试代理)抓包原理是怎样的?


当你开着charles去刷新某个网页时,charles会抓到你请求的数据
查尔斯抓包原理是什么?
利用了HTTP的中间人攻击漏洞来进行实现的

关于HTTP的中间人攻击是什么?
当客户端发送请求时,中间人会拦截住,然后假冒客户端的身份,去向server请求, server会返回结果给中间人,然后中间人再把结果返回给客户端
中间人可以篡改我们请求的参数,包括server返回的数据也可以篡改

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
程序主要有两个部分组成,一个程序的显示部分,一个程序的设置部分,显示部分主要是一个可以用手指拖动圆形小球,设置部分主要是对小球的颜色和大小进行参数设置。 1.1 View-ViewController 主要有三个ViewController,一个是用于显示的MainViewController,还有一个是用于设置的SetingsViewController,还有一个是用于设置小球颜色ColorSettingViewController. 一个RoundBallView,进行显示小球的View。 程序第一次开启的时候,小球的坐标是界面上一个(30,30)这个位置,小球颜色为红色,直径为50像素。SettingsView的Color选项为Red,Size为最小值50。ColorSettingView的CheckMark为Red。 MainView主要对小球进行拖动操作,程序重启后,小球的位置是最后一次拖动的坐标。 SetingsViewController的第一表格引导进入ColorSettingView,SetingsViewController的第二表格设置小球大小的变化,MainView始终保持小球最后一次设置的大小,小球的直径的最大值为100,最小值为50。 在ColorSettingViewController进行颜色参数的改变后能直接引起MainViewController中小球颜色对应变化,还有SetingsView的当前颜色的文字描述的对应变化,还有ColorSettingView自身的CheckMark的所在行。 程序开启的时候始终保持上次最终的状态。 MainView进入SetingView为垂直进入,SetingView进入ColorSettingView为导航横向进入。 1.2 Controller MainViewController,SetingViewController ,ColorSettingViewController三个都是简单ViewController,MainViewController,SetingViewController可以直接继承UIViewController, ColorSettingViewController继承UITableViewController

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值