Java岗 面试考点精讲(网络篇03期)
1. OSI七层模型

总结一下:
应用用层按协议打包数据
由传输层加上双方的端口号
由网络层加上双方的IP地址
由链路层加上双方的MAC地址,并将数据拆分成数据帧
数模信号转换并由物理层传输到另一端
每一层的协议
物理层:RJ45、CLOCK、IEEE802.3 (中继器,集线器,网关)
数据链路:PPP、FR、HDLC、VLAN、MAC (网桥,交换机)
网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)
传输层:TCP、UDP、SPX
会话层:NFS、SQL、NETBIOS、RPC
表示层:JPEG、MPEG、ASII
应用层:FTP、DNS、Telnet、SMTP、HTTP、WWW、NFS
SSL工作在哪层
表示层
2. TCP/IP模型
TCP/IP模型实际上是OSI模型的一个浓缩版本,它只有四个层次:
应用层,对应着OSI的应用层、表示层、会话层
传输层,对应着OSI的传输层
网络层,对应着OSI的网络层
网络接口层,对应着OSI的数据链路层和物理层
OSI模型的网络层同时支持面向连接和无连接的通信,但是传输层只支持面向连接的通信;TCP/IP模型的网络层只提供无连接的服务,但是传输层上同时提供两种通信模式。
3. 说一下TTL
Time To Live
数据包再传输过程中每经过一个路由器,TTL就减1,直到TTL=0时,数据包被丢弃,并发送ICMP报文通知源主机防止重复发送。
4. ping和tracert命令用的什么协议
ICMP
5. MTU是什么
最大传输单元。
由于不同硬件的物理特性不同,对数据帧的最大长度都有不同的限制,这个最大长度称为MTU。
(然后通过路由对IP报文进行分片完成传输。)
6. 三次握手
6.1 部分报头信息声明
seq: 序列号,表示数据第一个字节的序号
ack: 确认序列号,表示期望收到的第一个字节的序号
6.1.1 FLAG位
常用的由SYN、ACK、FIN。
SYN:用作建立连接时的同步信号。
ACK:用于对收到的数据进行确认。
FIN:表示后面没有数据需要发送,连接需要关闭。
6.2 握手过程

第一次握手:客户端发送数据包将SYN置1,表示希望建立连接,seq=x。发完后进入SYN_SEND状态。
第二次握手:服务器收到请求后,通过SYN确认是建立连接请求,然后发送一个响应包,将SYN=1 ACK=1 seq=y ack=x+1,然后进入SYN_RCVDz状态
第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
7. 为什么要三次握手?
保持信息对等。
防止请求超时导致脏连接。
8. 两次握手会怎样?
如果两次握手就创建连接,传输完数据并释放连接后,第一个超时的连接请求才到达服务器,服务器会认为是客户端创建新连接的请求,然后创建连接。此时客户端的状态不是SYN_SENT,所以会直接丢弃服务器传来的确认数据,导致最后只是服务器单方面建立了连接。
9. 四次挥手
这个图不好画,网上找了一个。

客户端想要关闭连接,然后发送FIN信号并带上seq信息给服务器,
服务器应答ACK告诉客户端可以断开,但是要等我把数据发送完喽。注意这时候客户端进入FIN_WAIT_2状态。
服务器将数据发送完后发送FIN+ACK给客户端,告诉客户端OK了,然后自己进入CLOSE_WAIT状态。
客户端收到后,给服务器发送ACK确认收到,然后自己进入TIME_WAIT状态。
经过2MSL,客户端没有收到服务器传来的报文,则确定服务器已经收到最后的ACK信号,连接正式释放。
四次挥手白话文:
客户端:我断连接了阿
服务器:噢,好的知道了,不过要等等,我还有一些数据没传完,我传完了告诉你。
服务器:小老弟,我传完了,可以关闭了,收到请回复(没有回复的话我过会重新喊你)
客户端:收到(我得再等等,要确认我哥收到了我的回复)
为什么不直接关闭而是进入TIME_WAIT呢?
客户端要确认服务器能收到ACK信号。(如果不确认这一点,服务器会认为客户端没有收到自己的FIN+ACK报文,所以会重发)
防止失效请求。(为了防止已失效的连接的请求数据包和正常的混淆)
10. TCP和UDP区别
TCP面向连接,UDP面向非连接
TCP提供可靠的服务(数据传输无差错、不丢失、不重复、按序到达),UDP不可靠
TCP面向字节流,UDP面向报文
TCP数据传输慢,UDP数据传输快
TCP首部开销20字节,UDP8字节
11. 常用端口以及对应服务
| 常见服务 | 端口 |
|---|---|
| HTTP | 80 |
| FTP | 21 |
| DNS | 53 |
| POP3 | 110 |
| SMTP | 25 |
| SSH | 22 |
| nginx | 80 |
| MEMCACHED | 11211 |
| MYSQL | 3306 |
| TOMCAT | 8080 |
| NFS | 2049 |
| TLENET | 23 |
| HTTPS | 443 |
| SAMBA | UDP139 TCP139 |
| POSTFIX | 25 |
| IMAP | 143 |
| ZABBIX | 10051 |
| DHCP | 56 |
12. 在浏览器中输入网址之后执行会发生什么?
DNS解析,找到对应ip地址
客户端发起http/https请求,然后交给传输层
传输层将请求分成报文段,添加目标源和端口,并随机用一个本地接口封装进报头,然后交给网络层。
网络层加上双方的ip地址信息,并负责路由分发。
链路层中,包通过链路层发送到路由器,通过邻居协议查找给定IP地址的MAC地址,然后发送ARP请求查找目的地址,如果得到回应后就可以使用ARP的请求应答交换的IP数据包进行传输了,然后发送IP数据包到达服务器的地址。
有问题或者有漏掉的部分可以在评论区提出。
13. IP地址的分类
A类地址:以0开头,第一个字节范围:0~127(1.0.0.0 - 126.255.255.255);
B类地址:以10开头,第一个字节范围:128~191(128.0.0.0 - 191.255.255.255);
C类地址:以110开头,第一个字节范围:192~223(192.0.0.0 - 223.255.255.255);
内部地址:10.0.0.0—10.255.255.255, 172.16.0.0—172.31.255.255, 192.168.0.0—192.168.255.255。
14. ARP是什么协议,简单语言解释一下工作原理
地址解析协议。
每个主机都会在自己的ARP缓冲区中建立一个ARP列表,以表示IP地址和MAC地址之间的对应关系。
当源主机要发送数据时,首先检查ARP列表中是否有对应IP地址的目的主机的MAC地址,如果有,则直接发送数据,如果没有,就向本网段的所有主机发送ARP数据包,该数据包包括的内容有:源主机 IP地址,源主机MAC地址,目的主机的IP地址。
当本网络的所有主机收到该ARP数据包时,首先检查数据包中的IP地址是否是自己的IP地址,如果不是,则忽略该数据包,如果是,则首先从数据包中取出源主机的IP和MAC地址写入到ARP列表中,如果已经存在,则覆盖,然后将自己的MAC地址写入ARP响应包中,告诉源主机自己是它想要找的MAC地址。
源主机收到ARP响应包后。将目的主机的IP和MAC地址写入ARP列表,并利用此信息发送数据。如果源主机一直没有收到ARP响应数据包,表示ARP查询失败。
广播发送ARP请求,单播发送ARP响应。
15. DHCP协议有什么作用
一个局域网的网络协议,使用UDP协议工作,用途:给内部网络或网络服务供应商自动分配IP地址,给用户或者内部网络管理员作为对所有计算机作中央管理的手段。
16. 子网掩码的作用
子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
通过IP和子网掩码计算网络号(笔试题)
计算出IP二进制和子网掩码的二进制,然后取与
通过IP和子网掩码计算主机号(笔试题)
将子网掩码的二进制取反,然后与IP的二进制取与。
Java岗 面试考点精讲(网络篇03期)的更多相关文章
- Java岗 面试考点精讲(基础篇01期)
即将到来金三银四人才招聘的高峰期,渴望跳槽的朋友肯定跟我一样四处找以往的面试题,但又感觉找的又不完整,在这里我将把我所见到的题目做一总结,并尽力将答案术语化.标准化.预祝大家面试顺利. 术语会让你的面 ...
- Java岗 面试考点精讲(基础篇02期)
1. 两个对象的hashCode相同,则equals也一定为true,对吗? 不对,答案见下面的代码: @Override public int hashCode() { return 1; } 两个 ...
- 深入Java核心 Java内存分配原理精讲
深入Java核心 Java内存分配原理精讲 栈.堆.常量池虽同属Java内存分配时操作的区域,但其适用范围和功用却大不相同.本文将深入Java核心,详细讲解Java内存分配方面的知识. Java内存分 ...
- 2019年后,Java岗面试快速突击指南
大家好.这篇文章给大家分享一下如何获得一个可以去参加面试的最小可行知识(Minimal Viable Knowledge)!我自己在就基本上靠文章中的策略在找实习的时候拿到了头条阿里的offer.所以 ...
- Java集合详解8:Java的集合类细节精讲
Java集合详解8:Java集合类细节精讲 今天我们来探索一下Java集合类中的一些技术细节.主要是对一些比较容易被遗漏和误解的知识点做一些讲解和补充.可能不全面,还请谅解. 本文参考:http:// ...
- 《剑指offer-名企面试官精讲典型编程题》读后感
首先,不得不说这是一本好书!!! 我接触这本书是在学长的推荐下去看的,而且口碑还是挺好的一本书,豆瓣的评分也比较高,当我刚看了它,我就深深的爱上了这本书,到现在为止,我已经看了三遍这本书了,平时无聊时 ...
- 书评<<剑指offer 名企面试官精讲典型编程题>>
前前后后阅读了一周, 感慨很多, 面试考察的是一个人的综合能力, 这一点从面试官的角度去解读, 确实对面试的理解更立体. *) 具体考察的点1) 扎实的基础2) 高质量的代码3) 清晰的思路4) ...
- 工作三年终于社招进字节跳动!字节跳动,阿里,腾讯Java岗面试经验汇总
前言 我大概我是从去年12月份开始看书学习,到今年的6月份,一直学到看大家的面经基本上百分之90以上都会,我就在5月份开始投简历,边面试边补充基础知识等.也是有些辛苦.终于是在前不久拿到了字节跳动的o ...
- Java实现人民币大写精讲
想要实现人民币大写,在发票等场景中使用?? 1234.56显示为:壹仟贰佰叁拾肆元伍角陆分,那就往下看看吧! 本程序可以实现 0 到 9999 9999 9999.994 以内的人民币大写转换,精确到 ...
随机推荐
- Docker 三剑客之 Docker Compose
Docker Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排,开源地址:https://github.com/docker/compose Dock ...
- YxCMS 1.4.7 最新版漏洞分析
i春秋作家:F0rmat 原文来自:YxCMS 1.4.7 最新版漏洞分析 0x01前言 很感谢关注我专辑的表哥,我会坚持写下去的,最近会慢一点,一月四篇是正常的. 在先知看到的,大部分都是后台漏洞, ...
- 细说SpringDI Setter注入
依赖注入(DI)是一个过程,通过这个过程,对象可以通过构造函数参数,工厂方法的参数或者在构造或返回对象实例后设置的属性来定义它们的依赖关系从工厂方法.然后容器在创建bean时注入这些依赖关系.这个过程 ...
- UML2.0最新版入门图解
一.UML概述 UML(UnifiedModelingLanguage)统一建模语言,是面向对象软件的标准化建模语言.由于面向对象软件开发需要经过OOA(面向对象分析),OOD(面向对象设计),OOP ...
- 每天学点SpringCloud(七):路由器和过滤器-Zuul
为什么要使用Zuul 先来看一下下方这个图 假如现在我们具有四个微服务,分别是用户.订单.支付.催收微服务,它们的调用方式分别是使用http.restful.thrift.kafka.这个时候如果我们 ...
- Python学习笔记【第十四篇】:Python网络编程二黏包问题、socketserver、验证合法性
TCP/IP网络通讯粘包问题 案例:模拟执行shell命令,服务器返回相应的类容.发送指令的客户端容错率暂无考虑,按照正确的指令发送即可. 服务端代码 # -*- coding: utf- -*- # ...
- Kali学习笔记8:四层发现
1.基于TCP协议 优点: 1.可路由且结果可靠 2.不太可能会被防火墙过滤 3.甚至可以发现端口 缺点: 速度较慢(三次握手) 利用Scapy发送ACK数据包: 配置数据包: 发送数据包: 看一下收 ...
- 第二次作业:分布式版本控制系统Git的安装与使用
本次作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2103 第一个git仓库地址:https://github.com/ ...
- Mybatis解析mapper
众所周知,接口是不能被实例化的,但是日常开发中,我们经常能直接使用dao层对象的方法,这又是为什么呢. 带着这些问题,我们看下mybatis内部做了那些操作. Mapper解析 上文我们描述了myba ...
- java扫盲 接口 Enumeration
摘要: 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 记起2年前,高中生活最多的是老师的批评.谢谢! -泥沙砖瓦浆木匠 ...