没有合适的资源?快使用搜索试试~ 我知道了~
首页Java后台开发岗面试笔记.docx
资源详情
资源评论
资源推荐

计算机网络
网络模型与相关协议:
OSI 七层模型:物理层,数据链路层,网络层,运输层,会话层,表示层, 应用层。
TCP/IP5 层模型:物理层,数据链路层,网络层,运输层,应用层。
TCP/IP4 层模型:网络接口层,网络层(IP),运输层(TCP/UDP),应用层(HTTP)。
常见应用层协议:DNS,HTTP, SMTP, POP3(接受文件),FTP,Telent 远程终端协议。
传输层:TCP,UDP; 网络层:ICMP,IGMP,IP
可以这样做,在 OSI 模型中 ARP 协议属于链路层;而在 TCP/IP 模型中,ARP 协议属于网络层。
ARP 是 IP 地址解析为 MAC 地址 RARP 将 MAC 地址解析为 IP 地址
关于 TCP 协议建立和拥塞控制
一条 TCP 连接上发送数据速度的影响因素有哪些。(服务器到客户端之间带宽瓶颈、客户端接收能
力限制、服务器网卡处理能力)
TCP、UDP 协议的区别
TCP 提供可靠的、面向连接的运输服务。在传输数据之前必须三次握手建立连接,数据传输结
束之后,4 次挥手释放连接,而且在数据传递时,又有确认应答、超时重传、滑动窗口、拥塞控制
等机制保证传送数据的可靠性。TCP 经常用于对网络通信质量有很高要求的地方,如文件传输,邮
件发送,远程登录等场景。SMTP、TELNET、HTTP、FTP
UDP 在传送数据之前不需要建立连接,目的主机收到 UDP 报文后,不需要给出确认。UDP 不提
供可靠交付,一般用于即时通信,如语音、视频、直播等。RIP(路由选择协议),DNS
TCP 粘包:
TCP 粘包就是指发送方发送的若干包数据到达接收方时粘成了一包,从接收缓冲区来看,后一包数
据的头紧接着前一包数据的尾。原因可能是发送方也可能是接收方造成的。
发送方原因:TCP 默认使用 Nagle 算法,将多次间隔较小、数据量较小的数据,合并成一个数据量

大的数据块,然后进行封包。
接收方原因:TCP 将接收到的数据包保存在接收缓存里,然后应用程序主动从缓存读取收到的分组。
这样一来,如果 TCP 接收数据包到缓存的速度大于应用程序从缓存中读取数据包的速度,多个包就
会被缓存,应用程序就有可能读取到多个首尾相接粘到一起的包。
如果多个分组毫不相干,甚至是并列关系,那么这个时候就一定要处理粘包现象了。处理方法:发
送方关闭 Nagle 算法。
接收方:接收方没有办法来处理粘包现象,只能将问题交给应用层来处理。应用层循环读取所有的
数据,根据报文的长度判断每个包开始和结束的位置。
TCP 为了保证可靠传输并减少额外的开销(每次发包都要验证),采用了基于流的传输,基于流的
传输不认为消息是一条一条的,是无保护消息边界的。而 UDP 则是面向消息传输的,是有保护消息
边界的,接收方一次只接受一条独立的信息,所以不存在粘包问题。
数据报文的结构:应用程序+TCP/UDP 报文头部+IP 报文头部(到这是以太网帧,46-1500)+以太网头
部;
TCP 报文头部结构:(前 20 字节固定)16 为源端口号+16 位目的端口号+32 位序号+32 位确认号+4
位头部长度(单位 4 字节)+6 位保留+6 个关键字(SYN,ACK,FIN)+16 位窗口大小(指接收窗
口)+16 位校验和+16 位紧急指针+最多 40 字节的选项;
UDP 报文头部结构首部字段只有 8 个字节,包括源端口、目的端口、长度、检验和。:
IP 报文头部结构:
4 位版本+4 位首部长度(单位 4 字节)+8 位服务类型+16 位总长度(字节)
16 位标识(分组)+3 位标志(是否分组)+13 为片内偏移
8 位 TTL+8 位上层协议+16 位首部检验和
32 位源 IP 地址
32 位目的 IP 地址

以太网头部:
6 字节目的地址+6 字节源地址+2 字节类型。这个地址指 MAC 地址。
点对点和端对端的区别:
点到点通信是针对数据链路层或网络层来说的,因为数据链路层只负责直接相连的两个节点之间的
通信,一个节点的数据链路层接受 ip 层数据并封装之后,就把数据帧从链路上发送到与其相邻的下
一个节点。 点对点是基于 MAC 地址和或者 IP 地址,是指一个设备发数据给与该这边直接连接的其
他设备,这台设备又在合适的时候将数据传递给与它相连的下一个设备,通过一台一台直接相连的
设备把数据传递到接收端。
端到端通信是针对传输层来说的,传输层为网络中的主机提供端到端的通信。因为无论 tcp 还是 udp
协议,都要负责把上层交付的数据从发送端传输到接收端,不论其中间跨越多少节点。只不过 tcp
比较可靠而 udp 不可靠而已。所以称之为端到端,也就是从发送端到接收端。它是一个网络连接,
指的是在数据传输之前,在发送端与接收端之间(忽略中间有多少设备)为数据的传输建立一条链
路,链路建立以后,发送端就可以发送数据。
IP 数据报传输的过程:(无论怎么传,IP 源和目的地址不变,但 MAC 目的和源地址会变)
IP 数据报需从主机 A 上传送到主机 B 上,主机 A 首先查找路由表;
if(目的主机是与自己在同一个网段内)
主机 A 查询自己的 ARP 表;如果存在目的 IP 地址到 MAC 的映射,将 MAC 地址作为目的 MAC
地址封装成帧,发 给主机 B.如果没有,发送 ARP 请求广播给网段内的所有主机,来查询该目的 IP
地址的 MAC 地址
else if(发现了能与目的网络号相匹配的表目)
则把报文发给该路由表目指定的下一站的路由器或直接连接的网络接口;
报文发送到下一站时,数据帧的目的 MAC 地址是下一个站路由器或者网络接口的 MAC 地址,

而 IP 头部的目的 IP 地址是主机 B 的 IP 地址;
else
寻找标为“默认”的表目,把报文发送给该表目指定的下一站路由器;
滑动窗口:
TCP 通过滑动窗口的概念来进行流量控制,抑制发送端发送数据的速率,以便接收端来得及接收。
窗口:对应一段发送者可以发送的字节序列。这个序列是可以改变的。接收端发给发送端自己的接
受能力。然后发送端根据已确认接受的序列号和接受能力滑动窗口,一下子全部发送,等待接收端
确认。
拥塞控制:
和流量控制的区别:
拥塞控制是防止过多的数据注入到网络中,可以使网络中的路由器或链路不致过载,是一个全局性
的过程。
流量控制是点对点通信量的控制,主要就是抑制发送端发送数据的速率,以便接收端来得及接收。
(设置拥塞控制窗口 cwnd, 在发送数据时,将拥塞窗口的大小与接收端 ack 的窗口大小做比较,取较
小者作为发送数据量的上限。)
慢开始: 设置拥塞控制窗口 cwnd = 1,没收到一个 ACK,cwnd++;每过 1RTT,cwnd = cwnd * 2;呈指数增
长。
拥塞避免:当拥塞窗口 cwnd 达到一个阈值时(cwnd >= ssthresh),窗口大小不再呈指数上升,而
是以线性上升,避免增长过快导致网络拥塞。每当过了一个 RTT,cwnd = cwnd + 1;
无论是在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(没有收到确认 ACK);拥塞
窗口设置为 1,阈值为拥塞时发送窗口的一半,执行慢开始算法。
快重传:当发送方连续收到三个重复确认时,就立即重传对方尚未收到的报文段。并执行快恢复算
法
快恢复:将 cwnd 设置为 ssthresh 的大小,然后执行拥塞避免算法。

TCP 三次握手:
1、客户端向服务器发送 TCP 连接请求数据包,其中同步标志为 SYN=1,ACK=0,初始序列号为 x;
( syn_sent,等待回复)
2、服务器收到请求后,发回连接确认包。SYN=1,ACK=1,ack=x+1,初始序列号为 y;( syn_rcvd,
收到请求,等待回复)
3 、 客 户 端 收 到 确 认 报 文 后 , 还 需 发 送 确 认 数 据 包 。 ACK=1,ack=y+1, 序 列 号 为 x+1;
( ESTABLISHED,完成三次握手)
三次握手是为了建立可靠的通信信道,双方都确认自己和对方的发送和接受都是正常的。SYN=1 表
示这是个连接请求或连接接受报文,不携带数据。不能变成两次,已失效的连接请求报文段突然又
传送到了服务端,服务端误以为是正常的连接请求,直接发送连接确认报文,导致 TCP 建立,浪费
资源,因而产生错误。
1、TCP 握手协议
第一次握手:建立连接时,客户端发送 syn 包(syn=j)到服务器,并进入 SYN_SEND 状态,等待服务
器确认;
第二次握手:服务器收到 syn 包,必须确认客户的 SYN(ack=j+1),同时自己也发送一个 SYN 包
(syn=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态;
剩余63页未读,继续阅读












安全验证
文档复制为VIP权益,开通VIP直接复制

评论0