Android面试的网络知识点

我是结合android中遇到的网络知识串联一遍,可能会很杂,但是对复习网络基础知识很有帮助。

Socket:

socket是对TCP/IP协议的封装和应用(程序员层面上),socket是对ip和端口的封装,有着socket编程一说。而我们平时说的最多的socket是什么呢,实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API)。通过Socket,我们才能使用TCP/IP协议。实际上,Socket跟TCP/IP协议没有必然的联系。Socket编程接口在设计的时候,就希望也能适应其他的网络协议。所以说,Socket的出现只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,(之前一直对socket很模糊,现在比较清晰了)。

Android长连接,怎么处理心跳机制:

长连接就是大家建立连接之后, 不主动断开. 双方互相发送数据, 发完了也不主动断开连接, 之后有需要发送的数据就继续通过这个连接发送.TCP连接在默认的情况下就是所谓的长连接, 现在http1.1默认情况下也会是长连接,http1.0可以设置keep-live为true来达到长连接的效果。(http这儿我还没细看,有问题的欢迎来指正)

这里简单说一下推送,1 轮询,这样很简单,只要定时的去服务器那边查询有没有新的消息即可,但是这样每次都得来一次tcp 的三次握手和四次握手,很费电量和流量。2 SMS通知  服务器给客户端发送一条特殊的短信,然后让客户端拦截,然后进行通知。不过一般公司都不这么玩。 3 长连接 客户端主动和服务器建立TCP长连接之后, 客户端定期向服务器发送心跳包, 有消息的时候, 服务器直接通过这个已经建立好的TCP连接通知客户端.

心跳机制本来tcp是不需要心跳包的,因为tcp是有保活定时器的,默认是用保活定时器来维持长连接,但是保活定时器的周期是两小时。(还有一种说法是设置SO_KEEPALIVE才会开启保活定时器,但是我在课本上找到了这一段描述,客户端每次发一次报文,他就会重新设置保活计时器,从这就肯定了包活计时器是开着的,不用手动设置)。这些前提是NAT没有超时,DHCP正常续租。(DHCP(Dynamic Host Configuration Protocal)协议是干嘛的?在局域网中,每个电脑的ip配置很麻烦并且容易出错,就出现了DHCP。它可以使电脑插上网线就可以使用,首先他会广播发送DHCP发现报文,然后只有DHCP服务器(不止一个)会给他返回一个DHCP提供报文,电脑会从中选择一个,然后发送一个DHCP请求报文,服务器这时候发送确认报文DHCPACK,会给他分配一个动态的ip地址,这个ip是有租期的,到了时间电脑要主动续租,否则服务器会停用这个ip)。

但是为什么还要心跳包呢?因为不管是连无线还是使用移动网络,都有一个类似NAT表,将你的内部ip和外网ip对应着,如果你离开了这个wifi,ip就会消失,重连的话ip就会给你重新分配,而移动网络如果长时间没有数据,就会删除对应的NAT表。所以发送心跳包就是检测NAT有没有发生变化,其次才是检测连接有没有断开,(否则的话,客户端因为断网或者其他原因导致ip发上变化,链路断开, 没有写操作的TCP连接是感知不到的, 除非这个时候发送数据给服务器, 造成写超时, 否则TCP连接不会知道断开了. 主动kill掉一方的进程, 另一方会关闭TCP连接, 是系统代进程给服务器发的FIN. TCP连接就是这样, 只有明确的收到对方发来的关闭连接的消息(收到RST也会关闭, 大家都懂), 或者自己意识到发生了写超时, 否则它认为连接还存在.)

心跳包的间隔怎么设置,这个就有很大的文章了,

Ping的整个过程。ICMP报文是什么。

先介绍ICMP,首先icmp是网络层的,它是网际控制报文协议Intent Control Message Protocal,它的报文有两种,ICMP差错报告报文和ICMP询问报文,通过名字就知道两种报文的作用,ICMP会被装在ip报文中作为数据发送。

而平常说的ping就是ICMP的回送请求和回送回答报文,他们是询问报文中的一种,ping是Packet InterNet Groper分组网间探测,是应用层用网络层的一个典型例子,中间没有通过Tcp和UDP。一般ping某个主机,会一连发出四个回送请求报文,如果主机在线,他就会给源主机发回送回答报文。

过程:1 检查本地ARP缓存,查找目标主机的MAC地址 2 如果没有找到MAC地址,使用ARP协议获取目标主机MAC地址,并放入ARP缓存 3 发出ICMP echo request包,接收ICMP echo reply包

TCP的三次握手与四次挥手过程,各个状态名称与含义,TIMEWAIT的作用。

这一块可能都比较熟悉了,但是细节可能已经忘了,再复习一遍

三次握手:首先客户端A手动打开,发送一条连接请求报文段,当然A也会创建一个TCB传输控制模块,用来存储一些连接中的重要信息,报文段中有一个同步字段SYN=1,初始序列seq=x,这时A进入到SYN-SENT状态,服务器B收到请求后也会创建TCB,如果建立连接,则发送确认报文段SYN=1,ACK=1,seq=y,ack=x+1,同时B进入到SYN-RCVD,A收到后发送确认报文段,ACK=1,ack=y+1,seq=x+1,同时A进入ESTABLISHED状态,B收到后也进入到ESTABLISHED状态。

四次挥手:客户端A发送释放报文段,并停止发送数据,FIN=1,这是seq=u,进入FIN-WAIT-1状态,B收到请求,ack=u+1,这是seq=v,进入CLOSE-WAIT状态。这时TCP服务器通知高层应用进程,A到B的连接就释放了。TCP处于半关闭状态。A收到以后进入FIN-WAIT-2状态。如B也没数据可发,则FIN=1,seq=w(因为中间可能还发了一些数据),但是B还是重复上次的ack=u+1,这时B进入到LAST-ACK,等待的A的确认。A在收到B的释放连接后,ACK=1,seq=w+1,然后进入到TIME-WAITE状态。TIME-WAIT设为2MSL(Maximum Segment Lifetime),假如B收到后就进入CLOSE状态。假如2MSL时间到了后,A也进入到CLOSE状态,撤销相应的TCB,完成TCP的释放完成。

为什么要设置TIME-WAIT状态呢?1 可能B没收到确认,还会重发数据,这样A才能收到。2防止 可能本次连接以前发的“以失效的请求连接”出现在本次连接中,经过2MSL,就可以使本连接持续的时间内所产生的所有报文段从网络中消失。这样就可以在下一个新的连接中不会出现旧的连接请求。

Cookie与Session的作用于原理:

由于http是无状态的,所以必须得使用某种机制来保存用户的状态。Cookie和Session就能保存用户的状态。Cookie是用在客户端,一般都保存在硬盘上,当用户访问的时候,就会把保存的Cookie信息发送给服务器,服务器就会知道这是哪个用户发来的请求,服务器这边也会有相应的Session,记录着用户的信息。可以是内存、文件、数据库。刚开始用户没有生成Cookie的时候,服务器会在http上发送一条特殊的指令或者由脚本来让浏览器创建Cookie,里面有一个SessionId。等到下次用户再访问这个网站的时候,就可以使用Cookie,服务器就能识别。

上面说的有点乱:总结一次,Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。

电脑上访问一个网页,整个过程是怎么样的:DNS、HTTP、TCP、OSPF、IP、ARP:

1   我们在浏览器中输入网址,但电脑并不认识如此复杂的字符串,因此电脑使用DNS服务解析出对应的IP地址  2 访问网页的过程基于Http协议,因此我们访问网页的过程实际上就是Http协议发送请求和响应请求的过程  Http协议是应用层协议,它基于传输层的TCP协议,TCP协议描述了进程与进程间如何通信交流,把具体的传输过程交给下层的网络层   网络层由IP协议控制数据包的路由选择和存储转发,但由于网络上的主机太多,IP协议管理不过来,因此又把网络主机分为多块,在外部使用EGP外部网关协议,在内部使用IGP内部网关协议(包括RIP协议与OSPF协议)   当网络层的数据传输到以太网后,就通过ARP协议获取目标主机的MAC地址,最后把数据传输的任务交给数据链路层处理。

几个特殊ip地址的含义:

一、IP 0.0.0.0

严格说来,0.0.0.0已经不是一个真正意义上的IP地址了。它表示的是这样一个集合:所有不清楚的主机和目的网络。这里的“不清楚”是指在本机的路由表里没有特定条目指明如何到达。对本机来说,它就是一个“收容所”,所有不认识的“三无”人员,一律送进去。如果你在网络设置中设置了缺省网关,那么Windows系统会自动产生一个目的地址为0.0.0.0的缺省路由。

二、IP 255.255.255.255含义

限制广播地址。对本机来说,这个地址指本网段内(同一广播域)的所有主机。如果翻译成人类的语言,应该是这样:“这个房间里的所有人都注意了!”这个地址不能被路由器转发。

三、127.0.0.1

本机地址,主要用于测试。用汉语表示,就是“我自己”。在Windows系统中,这个地址有一个别名“Localhost”。寻址这样一个地址,是不能把它发到网络接口的。除非出错,否则在传输介质上永远不应该出现目的地址为“127.0.0.1”的数据包。整个127.* 网段通常被用作 loopback 网络接口的默认地址,不过一般默认为127.0.0.1。

四、224.0.0.1

组播地址,注意它和广播的区别。从224.0.0.0到239.255.255.255都是这样的地址。224.0.0.1特指所有主机,224.0.0.2特指所有路由器。这样的地址多用于一些特定的程序以及多媒体程序。如果你的主机开启了IRDP(Internet路由发现协议,使用组播功能)功能,那么你的主机路由表中应该有这样一条路由。

五、IP 169.254.x.x

如果你的主机使用了DHCP功能自动获得一个IP地址,那么当你的DHCP服务器发生故障,或响应时间太长而超出了一个系统规定的时间,Wingdows系统会为你分配这样一个地址。如果你发现你的主机IP地址是一个诸如此类的地址,很不幸,十有八九是你的网络不能正常运行了。

六、10.x.x.x、172.16.x.x~172.31.x.x、192.168.x.x

私有地址,这些地址被大量用于企业内部网络中。一些宽带路由器,也往往使用192.168.1.1作为缺省地址。私有网络由于不与外部互连,因而可能使用随意的IP地址。保留这样的地址供其使用是为了避免以后接入公网时引起地址混乱。使用私有地址的私有网络在接入Internet时,要使用地址翻译(NAT),将私有地址翻译成公用合法地址。在Internet上,这类地址是不能出现的。

Http1.0与Http1.1主要有以下区别:

1 是否允许复用连接:Http1.0不允许,响应请求后就断开连接,Http1.1允许且默认开启连接复用        2 Host头域:Http1.0没有,Http1.1有       3 状态码:Http1.1比Http1.0多了100,101,203,205等状态码     4 请求方式:Http1.0只有GET、HEAD和POST方法,Http1.1新增了其他多种方法

路由器和交换机的区别:

路由器工作于网络模型的网络层,其主要的功能是路由选择与存储转发,路由器上还能开启ACL访问控制列表、NAT地址转换等功能,扩展网络应用。

交换机工作于网络模型的数据链路层,其主要的功能是泛洪、存储转发、过滤和自学习,交换机还能够隔离冲突域,并划分VLAN。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容