Java看书7

对java程序员笔试解析 整理(7)

在这里插入图片描述

第四章 网络与通信

1.OSI网络模型
从逻辑上可分为七层模型,由下至上分别为物理层、数据链路层、网络层、传输层、会话层、表示层和应用层
应用层:也称为应用实体,一般指的是应用程序,常见的应用层协议有FTP、HTTP等
表示层:负责数据的编码以及转化,确保应用层正常工作
会话层:主要负责网络中两个结点之间的建立、维护、控制会话以及提供单工、半双工、和全双工三种通信模式的服务。NFS、RPC和X Windows都在该层工作
传输层:最重要的一层,负责分割组合数据实现端到端的逻辑连接。常见的传输层协议有TCP、UDP、SPX等
网络层:网络层的作用是将网络地址翻译为物理地址,并决定如何将数据从发送方路由到接收方,主要负责管理网络地址、定位设备、决定路由。上层传输的数据到这层被分割封装后叫包,分为用户数据包和路由更新包。常见的网络层协议有IP、RIP、OSPF等
数据链路层:控制物理层和网络层的通信,负责物理传输的准备,包括物理地址寻址、CRC校验错误通知、流量控制等。MAC地址和交换机工作都在这一层
物理层:物理层规定了激活维持关闭通信端口的机械特性电气特性功能特性以及过程特性。

2.TCP和UDP
传输层协议主要有TCP和UDP
TCP是一种面向连接的可靠的基于字节流的传输层通信协议,主要通过如下方式实现可靠的传输:当TCP发出一个段后,它启动一个定时器,等待目标端确认收到这个报端。如果不能及时确认将重发这个报文段。TCP将保持它首部和数据的校验和,目的是检测数据传输过程中的任何变化,如果收到的段检验有差错,TCP将丢弃这个报端同时不确认收到此报段。由于TCP报文段作为IP数据报传输到达可能失序,因此TCP会对收到的数据重写排序编号交给应用层。
UDP提供无连接的通信,不能保证数据包被发送到目标地址。UDP报头只有四个字段源端口号、目的端口号、数据包长度和校验和。
TCP对系统资源要求较多,UDP对系统资源要求较少。UDP具有较好时效性,工作效率较TCP协议高。

3.TCP协议
主要包括三部分:建立连接、传输数据、断开连接。
建立TCP连接很简单,通过三次握手便可建立连接。
建立好连接后,开始传输数据。TCP数据传输牵涉到的概念很多:超时重传、快速重传、流量控制、拥塞控制等等。
断开连接的过程也很简单,通过四次握手完成断开连接的过程

三次握手建立连接:

第一次握手:客户端发送syn包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认;第二次握手:服务器收到syn包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。

传输数据过程:

a.超时重传超时重传机制用来保证TCP传输的可靠性。每次发送数据包时,发送的数据报都有seq号,接收端收到数据后,会回复ack进行确认,表示某一seq 号数据已经收到。发送方在发送了某个seq包后,等待一段时间,如果没有收到对应的ack回复,就会认为报文丢失,会重传这个数据包。b.快速重传接受数据一方发现有数据包丢掉了。就会发送ack报文告诉发送端重传丢失的报文。如果发送端连续收到标号相同的ack包,则会触发客户端的快速重 传。比较超时重传和快速重传,可以发现超时重传是发送端在傻等超时,然后触发重传;而快速重传则是接收端主动告诉发送端数据没收到,然后触发发送端重传。c.流量控制这里主要说TCP滑动窗流量控制。TCP头里有一个字段叫Window,又叫Advertised-Window,这个字段是接收端告诉发送端自己 还有多少缓冲区可以接收数据。于是发送端就可以根据这个接收端的处理能力来发送数据,而不会导致接收端处理不过来。 滑动窗可以是提高TCP传输效率的一种机制。d.拥塞控制滑动窗用来做流量控制。流量控制只关注发送端和接受端自身的状况,而没有考虑整个网络的通信情况。拥塞控制,则是基于整个网络来考虑的。考虑一下这 样的场景:某一时刻网络上的延时突然增加,那么,TCP对这个事做出的应对只有重传数据,但是,重传会导致网络的负担更重,于是会导致更大的延迟以及更多 的丢包,于是,这个情况就会进入恶性循环被不断地放大。试想一下,如果一个网络内有成千上万的TCP连接都这么行事,那么马上就会形成“网络风 暴”,TCP这个协议就会拖垮整个网络。为此,TCP引入了拥塞控制策略。拥塞策略算法主要包括:慢启动,拥塞避免,拥塞发生,快速恢复。

四次握手断开连接:

第一次挥手:主动关闭方发送一个FIN,用来关闭主动方到被动关闭方的数据传送,也就是主动关闭方告诉被动关闭方:我已经不会再给你发数据了(当 然,在fin包之前发送出去的数据,如果没有收到对应的ack确认报文,主动关闭方依然会重发这些数据),但此时主动关闭方还可以接受数据。

第二次挥手:被动关闭方收到FIN包后,发送一个ACK给对方,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号)。

第三次挥手:被动关闭方发送一个FIN,用来关闭被动关闭方到主动关闭方的数据传送,也就是告诉主动关闭方,我的数据也发送完了,不会再给你发数据了。

第四次挥手:主动关闭方收到FIN后,发送一个ACK给被动关闭方,确认序号为收到序号+1,至此,完成四次挥手。

4.HTTP协议
超文本传输协议是应用层协议主要特点如下:
支持客户/服务模式
简单快速 ,客户向服务器请求服务时,只需要传送请求方法和路径
灵活,Http运行传输任意类型数据对象
无连接,无连接含义时限制每次只处理一个请求,收到应答即断开连接,采用这种方式可以节省传输时间
无状态,无状态指对事物处理没有记忆功能。缺少状态意味着后续处理需要前面的信息,则他必须重传,可能导致每次连接传送数据量增大。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值