互联网应用的实现主要是通过分层来实现的,每一层有自己相应的功能,上层依赖于下层,具体层次如下图:

下面具体一层层来了解:

物理层 / 实体层:

也就是将电脑通过物理的手段连接起来,其实也就是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网络模型的更多相关文章

  1. 网络协议相关面试问题-TLS与SSL握手

    HTTPS是什么? HTTPS并不是一个单独的协议,而是对工作在一加密连接(SSL / TLS)上的常规HTTP协议.通过在TCP和HTTP之间加入TLS(Transport Layer Securi ...

  2. 网络协议相关面试问题-http协议相关面试问题

    HTTP协议简介: 一些基本概念: 协议:指计算机通信网络中两台计算机之间进行通信所必须共同遵守的规定或规则. HTTP协议:超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML ...

  3. 网络协议相关面试问题-DNS相关面试问题

    对于网络上的大部通讯都是基于TCP/IP协议的, 其中最重要的是IP协议,它是基于IP地址的,而计算机通讯只能识别IP地址,如192.168.0.1,而不能识别像咱们在浏览器敲得见名之义的" ...

  4. 网络协议相关面试问题-https加密算法相关面试问题

    密钥: 密钥是一种参数,它是在使用密码cipher算法过程中输入的参数,同一个明文在相同的密码算法和不同的密钥计算下会产生不同的密文.所以说算法既使公开了但是密钥参数不同其结果也是不同的,其中关于明文 ...

  5. PHP网络协议相关考点

    HTTP状态码 HTTP状态码(HTTP Status Code)是用以表示网页服务器HTTP响应状态的3位数字代码. HTTP状态码主要有5种,代表5种不同类型的响应: 1xx:信息性状态码,代表接 ...

  6. 网络协议抓包分析——TCP传输控制协议(连接建立、释放)

    前言 TCP协议为数据提供可靠的端到端的传输,处理数据的顺序和错误恢复,保证数据能够到达其应到达的地方.TCP协议是面向连接的,在两台主机使用TCP协议进行通信之前,会先建立一个TCP连接(三次握手) ...

  7. TCP/IP网络协议基础知识集锦[转]

    引言 本篇属于TCP/IP协议的基础知识,重点介绍了TCP/IP协议簇的内容.作用以及TCP.UDP.IP三种常见网络协议相关的基础知识. 内容 TCP/IP协议簇是由OSI七层模型发展而来的,之所以 ...

  8. TCP/IP网络协议基础

    实验楼学习网络协议传送门 一.TCP/IP简介 TCP/IP(Transmission Control Protocol/Internet Protocol)是传输控制协议和网络协议的简称,它定义了电 ...

  9. 对TCP/IP网络协议的深入浅出归纳

    前段时间做了一个开发,涉及到网络编程,开发过程比较顺利,但任务完成后始终觉得有一些疑惑.主要是因为对网络协议不太熟悉,对一些概念也没弄清楚.后来 我花了一些时间去了解这些网络协议,现在对TCP/IP网 ...

随机推荐

  1. DP经典问题—————(LCIS)最长公共上升子序列

    这道题是LIS(最长上升子序列)与LCS(最长公共子序列)问题的综合版本,有关这两个问题可以看一下我的文章:https://www.cnblogs.com/myhnb/p/11305551.html ...

  2. 《ThinkPHP 5.0快速入门》 请求和响应

    1.请求对象 //传统调用$request = Request::instance();//实例化对象 $request->url();//获取当前的域名 //继承think\Controlle ...

  3. POJ2411 Mondriaan's Dream 【状压dp】

    没错,这道题又是我从LZL里的博客里剽过来的,他的题真不错,真香. 题目链接:http://poj.org/problem?id=2411 题目大意:给一个n * m的矩形, 要求用 1 * 2的小方 ...

  4. IT管理

    IT管理:变更管理:1/ 简单版,效率高类似数仓拉一个相关群,先和业务确定时间,然后在群里发通知.通知模板:@所有人 通知 :hive 计算集群停30分钟 原因: 当前数据量增多,hue 查询内存不足 ...

  5. vsftpd下载文件时内容乱码

    windows客户端访问Linux服务端的ftp并下载文档时,内容会出现乱码,这是由于vsftpd文件服务器不支持转码功能 通过java FTPClient下载 方法为 OutputStream is ...

  6. 【转帖】 解开龙芯与mips4000的关系

    -- 苏联给的套件,我们只要把电子管插上就好. -- 千万次机器,不晓得来源 DJS-130系列,16位小型机,仿造美国NOVA DJS-180系列,超级小型机,仿造美国DEC VAX, 能跑DEC的 ...

  7. DRF 认证 权限 视图 频率

    认证组件 使用:写一个认证类,继承BaseAuthentication 在类中写authenticate方法,把request对象传入 能从request对象中取出用户携带的token根据token判 ...

  8. django F与Q查询 事务 only与defer

    F与Q 查询 class Product(models.Model): name = models.CharField(max_length=32) #都是类实例化出来的对象 price = mode ...

  9. 美团2017年CodeM大赛-初赛A轮 C合并回文子串

    区间dp一直写的是递归版本的, 竟然超时了, 学了一下非递归的写法. #include <iostream> #include <sstream> #include <a ...

  10. Jenkins常用插件介绍

    摘要: 对于中小型运维团队,jenkins作为运维利器,可以解决很多工作中的痛点.基于UI的特性从而让使用者的入门成本很低,基于插件可以具备认证,记录,条件触发以及联动,让运维工程师可以将精力放在业务 ...