为了账号安全,请及时绑定邮箱和手机立即绑定

网络编程与网络框架(刘望舒书笔记)

标签:
Android

1,网络分层:

 1)物理层

负责物理传输;把计算机连接起来的物理手段.

 2)数据链路层

 控制网络层与物理层之间的通信,在不可靠的物理线路上进行数据的可靠传递.

 3)网络层

决定如何将数据从发送方路由到接收方.(选择最佳路径)

 4)传输层

 两台主机上的应用程序提供端到端的通信.主机到主机.主要有两个传输协议:TCP(传输控制协议)和UDP(用户数据报协议).TCP是一个可靠的面向连接的协议,UDP是不可靠的或者说无连接的协议.

 5)应用层

 应用程序接到传输层的数据之后就进行数据解读.应用层就是规定应用程序的数据格式的.

2.tcp的三次握手与四次挥手.

 通常我们进行HTTP连接网络的时候会进行TCP的三次握手,然后传输数据,之后再释放连接..

第一次握手:建立连接

第二次握手:服务器接收到服务端的SYN报文段,对其进行确认,设置,同时自己还要发送SYN请求信息,将SYN设置为1,服务端将信息一并发送给客户端,并且改变状态.

第三次握手:客户端接收到服务端的报文段,然后设置ACK,向服务端发送ACK报文段,这个报文段发送完毕后,客户端和服务端都进入ESTTABLISHED(TCP连接成功)状态,完成TCP的三次握手.

当数据传送完毕之后,断开连接之后就需要进行TCP的四次挥手.

第一次挥手:客户端设置seq和ACK,向服务端发送一个FIN报文段.此时,客户端进入FIN_WAIT_1状态,表示客户端没有数据要发送给服务端了.

第二次挥手:服务端收到报文段,向客户端返回一个ACK报文段

第三次挥手:服务端向客户端发送报文段,请求关闭连接,同时服务端改变状态.

第四次挥手:客户端收到服务端的报文段,向服务端发送ACK报文段,然后客户端进入TIME_WAIT状态.服务端收到报文段之后就连接关闭,此时客户端等待2msl(最大报文段生存时间)后依然没有收到回复,则说明服务端已经正常关闭,这样客户端也可以关闭连接了.

  如果有大量的连接,每次在连接,关闭的时候都要经历三次握手,四次挥手,这会造成性能地下,一次,HTTP有一种叫做keepalive connection的机制,它在传输数据后仍然保持连接,当客户端需要再次获取数据时,直接使用刚刚空闲下来的连接而无需再次握手

3HTTP协议原理

http是一个属于应用层的面向对象的协议,现在最新的HTTP版本是HTTP2,他是在2015年新发布的新版本,SPDY协议的主要特性也是在这个版本中.

http的主要特点有:

 支持客户/服务器模式

 简单快速.请求方法常用的有GET,HEAD,POST.http服务器的程序规模小,通信的速度很快.

  灵活:HTTP允许传输任意类型的数据对象.正在传输类型由Content-Type加以标记 

  无连接:无连接的含义是限制每次连接只处理一个请求.

  无状态:协议对事务处理没有记忆能力.

http有两种报文,分别是请求报文和响应报文.

请求报文:http报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.一般一个HTTP请求报文是由请求行,请求报头,空行和请求数据4个部分组成.

1,请求行:由请求方法,URL字段和HTTP协议的版本组成

HTTP请求方法一共有8中,对于移动开发用的最多的就是GET和POST.

 GET:请求获取统一资源标识符所标识的资源

  POST:在统一资源标识符所标识的资源后附加新的数据.

请求报头:

请求行后会有0个或者多个请求报头.

3请求数据

 请求数据不在GET方法中使用,而是在POST方法中使用,POST方法适用于需要客户填写表单的场合,与请求数据有关的最常用的请求表头是Content-Type和Content-Length.

3HTTP响应报文

一般格式为状态行,响应报头,空行,响应正文.

状态行:服务HTTP协议的版本,服务器发回的响应状态码,状态码的文本描述.

响应的类型有5种可能取值

100~199:指示信息,收到请求,需要请求者继续执行操作.

200~299:请求成功,请求已被成功接收并处理.

300~399:重定向,要完成请求前必须进行更进一步的操作.

400~499:客户端错误,请求有语法错误或请求无法实现

500~599:服务器错误,服务器不能实现合法的请求

HTTP的消息报头

消息报头分为通用报头,请求报头,响应报头,实体报头等.消息报头由键值对组成,每行一对,关键字和值用英文冒号":"分割.

 1,通用报头

它可以出现在请求报头,也可以出现在响应报头中

Date:表示消息产生的日期和时间

Connction:允许发送指定连接的选项.

Cache-Control:用于指定缓存指令,缓存指令是单向的,且是独立的.

  2,请求报头

 请求报头通知服务器关于客户端请求的信息.典型的请求报头

5b94dc3d0001424504900556.jpg

抓包

在window中推荐用fiddler来抓包.

原文链接:http://www.apkbus.com/blog-878791-68573.html

点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消