Android网络编程面试题集

转载 2018年04月17日 11:48:19

网络编程

TCP与UDP有什么区别?

  1. TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
  2. TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
  3. TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
  4. 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
  5. TCP首部开销20字节;UDP的首部开销小,只有8个字节
  6. TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

简单介绍一下TCP三次握手与四次分手过程?

TCP用三次握手(three-way handshake)过程创建一个连接,使用四次分手 关闭一个连接。

三次握手与四次分手的流程如下所示:

三次握手

  • 第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认;
  • 第二次握手:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态;
  • 第三次握手:客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。 完成了三次握手,客户端和服务器端就可以开始传送数据。以上就是TCP三次握手的总体介绍。

四次分手

  • 第一次分手:主机1(可以使客户端,也可以是服务器端),设置Sequence Number和Acknowledgment Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了;
  • 第二次分手:主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN_WAIT_2状态;主机2告诉主机1,我“同意”你的关闭请求;
  • 第三次分手:主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入LAST_ACK状态;
  • 第四次分手:主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。

三次握手与四次分手也是个老生常谈的概念,举个简单的例子说明一下。

三次握手

例如你小时候出去玩,经常玩忘了回家吃饭。你妈妈也经常过来喊你。如果你没有走远,在门口的小土堆上玩泥巴,你妈妈会喊:"小新,回家吃饭了"。你听到后会回应:"知道了,一会就回去"。妈妈听 到你的回应后又说:"快点回来,饭要凉了"。这样你妈妈和你就完成了三次握手的过程。

常见的网络编程面试题

1:tcp和udp的区别 TCP:是面向连接的流传输控制协议,具有高可靠性,确保传输数据的正确性,有验证重发机制,因此不会出现丢失或乱序。 UDP:是无连接的数据报服务,不对数据报进行检查与修改,无须...
  • windows_nt
  • windows_nt
  • 2014-06-05 21:08:12
  • 14251

Android 2017年九月面试经历总结

1.写在前面 本人2014年10月底以菜鸡的水平进入薯片公司手机团队做Android 应用开发。2016年底,公司出现危机,开始“优化”,本组一个小兄弟被“优化”,于是我也着手开始做准备,将来若...
  • csdn_aiyang
  • csdn_aiyang
  • 2017-10-12 14:59:26
  • 3000

Android客户端面试基础(四)-TCP/IP

OSI,TCP/IP,五层协议的体系结构,以及各层协议OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。 TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用...
  • johnWcheung
  • johnWcheung
  • 2017-06-01 20:42:27
  • 860

面试篇--android下网络通讯机制(三种网络通讯方式)

HttpClient HttpClient是Apache对java中的HttpURLClient接口的封装,主要引用org.apache.http.**。Google在2.3版本之前推荐使用Http...
  • dongbaoming
  • dongbaoming
  • 2016-12-18 15:19:41
  • 3886

android 面试题集

  • 2011年05月06日 18:20
  • 163KB
  • 下载

java面试题集

  • 2017年09月07日 22:06
  • 58.05MB
  • 下载

Android面试

原文链接:https://www.nowcoder.com/discuss/3244和大多数的面经不同,我不是大牛,手头也没有3,4个 sp 的 offer 求比较,我只是一个非211,985的本科应...
  • axi295309066
  • axi295309066
  • 2017-01-05 10:59:12
  • 1797

Android程序员必会的十大基础面试题----阿冬专栏

Android程序员必会的十大基础面试题!   1   Android中五种数据存储方式分别是什么?他们的特点?   Android提供了五种存取数据的方式 ...
  • zhangdong305
  • zhangdong305
  • 2016-10-14 21:09:59
  • 5696

JAVA面试题集-JAVA面试题集

  • 2008年09月16日 19:45
  • 120KB
  • 下载

Java面试题集(86-115)

下面的内容包括Struts 2和Hibernate的常见面试题,虽然Struts 2在2013年6月曝出高危漏洞后已经显得江河日下,而Spring MVC的异军突起更加加速了Struts 2的陨落,但...
  • jackfrued
  • jackfrued
  • 2013-12-26 23:37:05
  • 34372
收藏助手
不良信息举报
您举报文章:Android网络编程面试题集
举报原因:
原因补充:

(最多只允许输入30个字)