【第四章:网络协议】第18节:网络协议 - 入门(上)


大家好,很高兴我们可以继续学习交流Java高频面试题。在本小节是专刊第四章的第一个小节,我们主要针对网络协议来进行交流。网络协议的底层实现比较复杂,学习门槛较高。在本小节中,主要是根据作者本人学习总结到的知识,以及面试中的高频网络协议知识点进行交流。

由于面试时间是有限的,所以针对网络协议这一块知识点,考察最多的就是TCP协议的三次握手和四次挥手以及TCP/UDP协议的区别了。在网络协议篇章,我们从OSI七层协议说起,依次介绍TCP/IP协议,三次握手四次挥手,网络包的分片与重组,HTTP和HTTPS协议以及XSS和CSRF攻击等相关知识点。

好了,话不多说,让我们一起来学习网络协议相关知识点吧~

(1)简单说下OSI七层协议模型吧。

答:OSI七层模型包括应用层,表示层,会话层,传输层,网络层,数据链路层以及物理层。示意图如下所示:

图片说明

解析:

这是一个网络协议考察的基础题目,作为应聘者的我们,不光要能准确记忆这7层分别是什么,还需要做到切实理解。我们一起来简单看下各个层的作用吧。

  • 应用层:由用户自己规定,规定各个应用之间消息传递的形式等,包括各机互访协议,分布式数据库协议等。常见的应用层协议有HTTP协议和FTP等。
  • 表示层:在满足用户需求的基础上,尽可能的节省传输费用而设置的,比如传输压缩文件,jpeg或者加密文件等格式。
  • 会话层:用于建立和拆除会话。
  • 传输层:负责将来自会话层的消息传递给网络层,常见的传输层协议有TCP和UDP等协议。
  • 网络层:规定通信网内的路由选择等方式,建立用户间的信息报传输设施。常见的网络层协议有IP,ICMP以及ARP等协议。
  • 数据链路层:与建立数据传输链路相关。
  • 物理层:规定一些机电性能,也包括工作方式如双工、单工或半双工,建立通信的启动和终止等。

网上流传着各个口诀来对7层模型进行名字进行记忆,但是我认为没必要。你想,要想传输东西,我们是不是需要规定两个应用之间传输的请求和响应格式?那就是应用层负责的事情;接下来是不是需要规定传输格式?这就是表示层;然后需要会话层来建立会话;由传输层将数据包传输到网络层,然后通过数据链路来传输;最底层还需要物理层来规定一些物理硬件层面的东西。

总结:应用层->表示层->会话层->传输层->网络层->数据链路层->物理层


(2)TCP/IP协议有了解吗?

答:TCP/IP协议是一系列网络协议的总称,是网络通信的基本骨架。TCP/IP协议模型在OSI七层模型的基础上,通过合并的方式,简化为四层,分别为应用层,传输层,网络层以及链路层

我们通常的应用程序都工作在应用层,当各个应用之间通信时,传输层的TCP模块负责给HTTP数据添加TCP头部等信息;网络层的IP模块负责给HTTP数据添加IP头部等信息;链路层添加以太网首部等信息,并且通过电信号来传输数据包;然后数据包会依次经过对方的链路层,网络层,传输层以及应用层,实现数据的通信。

解析:

在这里,我们简单的了解了下如何使用TCP/IP协议进行数据的通信。这块涉及内容较多,包括IP协议,ARP协议以及路由协议等,这里我们做一个简单的介绍了解。

IP协议:

IP协议制定了一套网络地址,也就是IP地址,根据IP协议能够区分两台主机是否同属一个网络(子网)。

ARP协议(地址解析协议):

根据IP地址获取MAC地址,将目标的IP地址在链路层进行包装,生成以太网数据包,在同一个子网内进行广播出去,各个主机拿到IP地址和自己的IP地址对比,若一样,则返回自己的MAC地址。注意,MAC地址与对应的IP地址存入本机ARP缓存中并保留一定时间。

路由协议:

ARP的寻址必须是在同一个子网内,我们可以通过IP协议来确定是否是同一个子网。如果不是同一个子网,则通过网关将数据包多次转发到对应的子网中,完成这个路由协议的物理设备就是路由器。


(3)可以详细说一下三次握手以及四次挥手吗?(重点掌握)

答:TCP协议是一种可靠的协议,在正式传输数据之前必须通过三次握手建立连接并且互相交换窗口大小。在传输结束之后,通过四次挥手来确认双方都结束数据交互。

三次握手的状态流程图如下所示:

图片说明

客户端经历了Close->SYN_SENT->ESTABLISHED的状态变化;
服务端经历了Close->Listen->SYN_RCVD->EATABLISHED的状态变化。

四次挥手的状态流程图如下所示:
图片说明

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

Java开发岗高频面试题全解析 文章被收录于专栏

<p> Java开发岗高频面试题全解析,专刊正文共计31节,已经全部更新完毕。专刊分9个模块来对Java岗位面试中的知识点进行解析,包括通用面试技能,Java基础,Java进阶,网络协议,常见框架以及算法,设计模式等。专刊串点成面的解析每个面试题背后的技术原理,由浅入深,循序渐进,力争让大家掌握面试题目的背后的技术原理,摒弃背题模式的陋习。 专刊详细信息,请查阅专刊大纲和开篇词的介绍。 本专刊购买后即可解锁所有章节,故不可以退换哦~ </p> <p> <br /> </p>

全部评论
https://blog.csdn.net/weixin_38700769/article/details/106747977 自己对tcp/IP做了一个总结,看了楼主文章,部分没有写的内容可以参考我呀~
2 回复 分享
发布于 2020-06-14 19:16
打卡
点赞 回复 分享
发布于 2020-01-07 22:20
打卡
1 回复 分享
发布于 2020-02-13 21:45
面试的时候面试官问我应用层属于第几层?是第七层还是第一层呢?
1 回复 分享
发布于 2020-04-23 09:47
打卡 一刷。
1 回复 分享
发布于 2020-09-11 15:06
打卡,一刷
1 回复 分享
发布于 2020-09-26 17:23
tcp有个粘包啥的挺常问的 怎么没有
点赞 回复 分享
发布于 2020-02-24 18:30
TCP三次握手那里SYN_SDENT是写错了吗?多了字母D
点赞 回复 分享
发布于 2020-03-11 14:03
要是把拥塞避免也讲一下就更好了
点赞 回复 分享
发布于 2020-03-28 12:19
选择题  Adns使用tcp传输 B dns使用udp传输 但是百度说dns既可以用tcp又可以用udp是怎么回事
点赞 回复 分享
发布于 2020-04-26 18:13
请问一下四次挥手时服务器端的close_wait状态是不是也等待2msl呢?图里面没有体现。
点赞 回复 分享
发布于 2020-04-29 14:33
05/08 Mark
点赞 回复 分享
发布于 2020-05-09 06:30
你好,TCP数据包分段之后是在IP模块中进行重组的吗?看您第六个问题写的是这样的,IP分片和TCP分段应该是不一样的吧?
点赞 回复 分享
发布于 2020-05-29 16:42
第六个小问题是不是写错了,是不是应该在发送方会进行分片,在接收方进行数据包的重组?
点赞 回复 分享
发布于 2020-07-03 11:46
您好,关于第六个问题我想问一下    在TCP传输中,  ip头部后面一定会跟着TCP头部吗?
点赞 回复 分享
发布于 2020-09-03 00:21
请问一下第6问中,为什么分片和重组都是在接收方?
点赞 回复 分享
发布于 2021-03-07 12:13
UDP不支持分片?为什么啊?UDP的最大长度不是64kb吗?
点赞 回复 分享
发布于 2021-04-06 10:17
打卡
点赞 回复 分享
发布于 2023-09-09 18:47 河南

相关推荐

评论
10
1
分享

创作者周榜

更多
牛客网
牛客企业服务