网络协议相关面试问题-TCP与IP网络模型
互联网应用的实现主要是通过分层来实现的,每一层有自己相应的功能,上层依赖于下层,具体层次如下图:
下面具体一层层来了解:
物理层 / 实体层:
也就是将电脑通过物理的手段连接起来,其实也就是01电子信号的传输,这层有个了解既可,对于应用开发来说根据接触不到这么底层。
链接层:
- 链接层的协议
它位于物理层上方,而物理层只是一个01的电子信号,木有对信息号进分组,以太网协议规定了电信号的分组方式。下面则是以太网规定的数据包:其中Head里面包含了发送者或接收者的地址,还有数据类型等,而Data则是数据包中的具体内容。
- mac地址
它长这样:以太网规定每一个连接入网的所有设备都必须有一个网卡的接口,数据包必须是从一个网卡传递到另一个网卡上,而网卡的地址就是MAC地址。
- 广播
就算知道了网卡信息,如何发送给指定的计算机呢,看下图:1号计算机想要给2号计算机发送消息,其3、4、5号计算机也会收到此消息,只是说该消息头部带有要接收的mac地址,如果跟本机匹配上那就处理该消息,否则就丢弃,这就是所谓的广播。
网络层:
在上一层链接层以太网可以从一个MAC地址通过广播的形式发送到另一个MAC地址,这从技术上是可以实现的,但是效率太低了, 另外广播的方式只能在同一个子网络上进行传递,如果是不同的子网络则广播就无法传递了,而互联网是由无数个子网络组成,所以要想从上海主机找到美国主机那用广播就没法实现了,所以网络层就诞生了。
- 作用:
背景:以太网采用广播方式发送数据包。
TODO:能够区分哪些MAC地址属于同一个子网络。
作用:使得我们能够区分不同的计算机是否属于同一个子网络
网络层出现之后每台主机就有了一个IP地址和一个MAC地址了,MAC地址是绑定在网卡上的,而IP地址是网络管理员分配的,是动态变化的,而IP地址是可以帮我们确定子网络,而MAC地址功能则不一样,它是将数据包送到该子网络的目标网卡,所以从逻辑上需要清楚一点:先处理网络IP地址再处理MAC地址。 - ip协议:
规定网络地址的协议。 - ip数据包:
根据IP协议发送的数据,而它的格式如下:其中Head主要是存放一些数据的长度,IP地址等,而Data则是存放数据的具体内容,这是将IP数据包放在以太网数据包里的格式。
- arp协议:
背景:由于IP数据包是放在以太网数据包里发送的,所以说必须同时知道两个地址:一个是对方的MAC地址,另一个是对方的IP地址,通常情况下对方的IP地址是已知的,但是不知道对方的MAC地址,因为IP地址可以通过路由找到,而MAC地址是独一无二的,所以需要一个机制,能够从IP地址得到MAC地址。
核心原理:ARP协议也是发送一个数据包,它所在子网络的每一个主机都会收到这个数据包,然后从该数据包中提取出IP地址,再跟自身的IP地址进行比较,如果相同则做出回复并向对方报出自己的MAC地址,否则就会丢弃。这样有了ARP协议之后,我们就能够在同一个子网络内的主机MAC地址把它发送数据包到任意一个主机之上,跟链接层的广播异曲同工,只是广播对比的是MAC地址,而ARP协议对比的是IP地址。
传输层:
背景:根据前面的层目前已经有了IP地址和MAC地址了,就可以在互联网上的任意两台主机进行通讯了,那接下来问题来了:同一台主机许多程序都会用到网络,比如说:一边浏览网页,一边用qq跟朋友聊天,这时如果数据包从网络发来时怎么知道它是代表网页的内容,还是表示在线聊天的内容呢?所以此时还需要另外一个参数来表示数据包是供哪个应用程序使用的,这个参数就叫作端口号。
传输层的格式:
还是由Head+Data组成,而网络层是主机与主机的通讯,而到了传输层则是端口与端口之间的通讯了,其协议主要是有TCP和UDP。
应用层:
以上有了主机到主机之间的通讯和端口到端口之间的通讯之后,于是乎就可以实现应用程序之间的交流了。
应用层的作用,就是规定应用程序的数据格式。因为有各种各样的程序需要传递数据,比如说有EMAIL、www数据,此时就必须规定不同的协议不同的数据,这就是应用层所干的事,而结合物理层、网络层、传输层,格式就变成这样了:
以太网标头指的是MAC地址。
网络协议相关面试问题-TCP与IP网络模型的更多相关文章
- 网络协议相关面试问题-TLS与SSL握手
HTTPS是什么? HTTPS并不是一个单独的协议,而是对工作在一加密连接(SSL / TLS)上的常规HTTP协议.通过在TCP和HTTP之间加入TLS(Transport Layer Securi ...
- 网络协议相关面试问题-http协议相关面试问题
HTTP协议简介: 一些基本概念: 协议:指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则. HTTP协议:超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML ...
- 网络协议相关面试问题-DNS相关面试问题
对于网络上的大部通讯都是基于TCP/IP协议的, 其中最重要的是IP协议,它是基于IP地址的,而计算机通讯只能识别IP地址,如192.168.0.1,而不能识别像咱们在浏览器敲得见名之义的" ...
- 网络协议相关面试问题-https加密算法相关面试问题
密钥: 密钥是一种参数,它是在使用密码cipher算法过程中输入的参数,同一个明文在相同的密码算法和不同的密钥计算下会产生不同的密文.所以说算法既使公开了但是密钥参数不同其结果也是不同的,其中关于明文 ...
- PHP网络协议相关考点
HTTP状态码 HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码. HTTP状态码主要有5种,代表5种不同类型的响应: 1xx:信息性状态码,代表接 ...
- 网络协议抓包分析——TCP传输控制协议(连接建立、释放)
前言 TCP协议为数据提供可靠的端到端的传输,处理数据的顺序和错误恢复,保证数据能够到达其应到达的地方.TCP协议是面向连接的,在两台主机使用TCP协议进行通信之前,会先建立一个TCP连接(三次握手) ...
- TCP/IP网络协议基础知识集锦[转]
引言 本篇属于TCP/IP协议的基础知识,重点介绍了TCP/IP协议簇的内容.作用以及TCP.UDP.IP三种常见网络协议相关的基础知识. 内容 TCP/IP协议簇是由OSI七层模型发展而来的,之所以 ...
- TCP/IP网络协议基础
实验楼学习网络协议传送门 一.TCP/IP简介 TCP/IP(Transmission Control Protocol/Internet Protocol)是传输控制协议和网络协议的简称,它定义了电 ...
- 对TCP/IP网络协议的深入浅出归纳
前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没弄清楚.后来 我花了一些时间去了解这些网络协议,现在对TCP/IP网 ...
随机推荐
- ubuntu14.04 安装 zoom.us
https://support.zoom.us/hc/en-us/articles/204206269-Getting-Started-on-Linux http://askubuntu.com/qu ...
- 【并行计算-CUDA开发】CUDA编程——GPU架构,由sp,sm,thread,block,grid,warp说起
掌握部分硬件知识,有助于程序员编写更好的CUDA程序,提升CUDA程序性能,本文目的是理清sp,sm,thread,block,grid,warp之间的关系.由于作者能力有限,难免有疏漏,恳请读者批评 ...
- HDFS之JAVAAPI
JAVAAPI 上传小文件 代码
- day37 GIL、同步、异步、进程池、线程池、回调函数
1.GIL 定义: GIL:全局解释器锁(Global Interpreter Lock) 全局解释器锁是一种互斥锁,其锁住的代码是全局解释器中的代码 为什么需要全局解释器锁 在我们进行代码编写时,实 ...
- 多线程基础知识---sleep和wait区别
1.sleep()是Thread类的静态方法:wait()是Object的成员方法 2.sleep()可以在任何地方使用;wait()只能在同步方法或代码块中使用
- airflow_failover启动scheduler
参考: https://github.com/teamclairvoyant/airflow-scheduler-failover-controller 1.stop failover2.stop s ...
- 选择排序的Python代码实现
对于a[0]~a[n]的数组, 默认a[i]最小,和后面的a[i+1]~a[n]进行比较,把最小的和a[i]交换位置,保证本次循环结束后a[i]是上一次未排序的数据中最小的 写法1 a=[12,2,2 ...
- ./configure配置的参数 交叉编译 host,build target的含义
交叉编译 host,build target的含义:build就是你正在使用的机器,host就是你编译好的程序可以运行的平台,target就是你编译的程序可以处理的平台.这个 build和host比较 ...
- Arrays.asList()方法注意事项
1.Arrays.asList()底层数组作为物理层实现.所以返回的List大小不可更改,即不可以做add().remove()操作,并且对List所做的任何变动都会致使原数组发生变动. public ...
- idea配置glassFish
FIile ---> settings ---> 查找Application Server .. 点击加号,, 点击glassFish Server.. 找到glassFish存放路径 点 ...