Android 面试必备 - 计算机网络基本知识(TCP,UDP,android路由表

缺点:

  • 不可靠,不稳定 。因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。

三次握手与四次挥手

三次握手

第一次握手:第一次连接时,客户端向服务器端发送SYN(syn=j),等待服务器端的确认,此时客户端进入SYN_SEND状态,SYN:同步序列号

第二次握手:服务器端收到客户端发来的SYN,必须向客户端发送ACK包(ack=j+1=k),同时自己必须发送一个SYN包,即syn+ack,此时进入SYN_REC状态

第三次握手:客户端收到服务器端发来的syn+ack包,向服务器发送ack包(ack=k+1),发送完毕,此时进入ESTABLISH状态,连接成功,完成第三次连接。

发送 确认

第一次:SYN=1 SEQ=X ACK=0(客)

第二次:SYN=1 SEQ=Y ACK=X+1(服)

第三次: SEQ=X+1 ACK=Y+1(客)

4次挥手

  1. 当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求

A进入终止等待1(FIN-WAIT-1)状态

  1. 主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1

tcp处于半关闭状态(half-close)

a收到b端的确认后,就进入终止等待2状态

  1. 由B 端再提出反方向的关闭请求,将FIN置1

进入last-wait状态

  1. 主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束.

进入时间等待状态(time-wait)

时间等待计数器设置的时间过了2msl以后,进入closed状态

三次握手的原因

如果只有两次握手的话,比如说失效的报文段,突然发送到服务端,服务端收到失效报文段的请求后,会发送确认报文,新的连接就建立起来了。但现在由于客户端并没有发出请求,所以并不会理睬服务端的确认,也不会像服务端发送数据。而服务端以为已经连接起来了,一直在等待,浪费资源。

四次挥手的原因

TCP建立连接要进行3次握手,而断开连接要进行4次,这是由于TCP的半关闭造成的,因为TCP连接是全双工的(

即数据可在两个方向上同时传递)所以进行关闭时每个方向上都要单独进行关闭,这个单方向的关闭就叫半关闭.

关闭的方法是一方完成它的数据传输后,就发送一个FIN来向另一方通告将要终止这个方向的连接.当一端收到一个FIN,它必须

通知应用层TCP连接已终止了这个方向的数据传送,发送FIN通常是应用层进行关闭的结果.

名词解释

ACK TCP报头的控制位之一,对数据进行确认.确认由目的端发出,用它来告诉发送端这个序列号之前的数据段

都收到了.比如,确认号为X,则表示前X-1个数据段都收到了,只有当ACK=1时,确认号才有效,当ACK=0时,确认号无效,这时会要求重传数据,保证数据的完整性.

SYN 同步序列号,TCP建立连接时将这个位置1

FIN 发送端完成发送任务位,当TCP完成数据传输需要断开时,提出断开连接的一方将这位置1


Http 与 https


Http 是在应用层上的传输协议,底层是 TCP 协议实现的,

它一种面向无状态的连接,短连接,

之所以说他无状态,是因为在每一次请求完成之后,都会把连接关了,不会记住是哪一个客户端连接。

四种请求方式

get,post,pull,delete

请求信息有请求行,请求头,请求正文

请求行:请求方式,请求地址,请求协议

请求头:头名称,头值

请求正文:(只有post请求才会有)

响应信息有相应行,响应头,响应正文

响应行:响应协议,状态码,状态信息

响应 头:头名称和头值

响应正文

Http1.0与Http1.1,Http2.0的区别

http 2.0采用二进制的格式传送数据,不再使用文本格式传送数据

http2.0对消息头采用hpack压缩算法,http1.x的版本消息头带有大量的冗余消息

http2.0 采用多路复用,即用一个tcp连接处理所有的请求,真正意义上做到了并发请求,流还支持优先级和流量控制

http2.0支持server push,服务端可以主动把css,jsp文件主动推送到客户端,不需要客户端解析HTML,再发送请求,当客户端需要的时候,它已经在客户端了。

  • Http1.0一次只能处理一个请求和响应,Http1.1一次能处理多个请求和响应

  • 多个请求和响应过程可以重叠

  • 增加了更多的请求头和响应头,比如Host、If-Unmodified-Since请求头等

http和https的区别

https相当于http加上安全套接字,采用ssl加密技术

主要的区别

  1. 在osi模型中,ht
    tp工作于应用层,https工作与传输层

  2. http传输的时候采用明文传输,https采用加密传输

  3. http不需要证书,https需要响应额证书

  4. http以http开头,默认端口是80,https 以https开头,默认的端口是243

上传视频的时候为什么不用 Http 协议?

因为上传视频的时候文件一般比较长,如果我们采用 post 请求的话,写到输出流中,它并不会直接写到服务器中,而是会缓存在内存中,会影响我们的执行效率


扩展补充


默认的端口是243

上传视频的时候为什么不用 Http 协议?

因为上传视频的时候文件一般比较长,如果我们采用 post 请求的话,写到输出流中,它并不会直接写到服务器中,而是会缓存在内存中,会影响我们的执行效率


扩展补充


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值