深入浅析TCP/IP——TCP/IP五层模型

2023-11-13



一、TCP/IP五层模型

在这里插入图片描述
层与协议的关系
        每一层为了完成一种功能,定义了一种规则,这个规则叫作互联网协议

1、实体层

        把电脑连接起来的物理手段,比如用光缆、电缆、双绞线,它主要规定了网络的一些电器特性,负责传送0和1的电信号。

2、链路层

        硬件上的范畴均在链路层的作用范围之内。规定了0和1的解读方式:比如多少个信号算一组,每个信号为有什么意义,这就是链接层的功能

        穿插几个概念,链路层要进行通信要具备下列条件
        数据包、网卡的MAC地址、广播的发送方式,链路层就才可以在多台计算机之间传送数据了。

        以太网协议
        以太网规定一组电信号构成一个数据包,叫作帧,每个帧分成两个部分:标头和数据。

“标头”包含数据包的一些说明项,比如发送者、接受者、数据类型等

“数据”则是数据包的具体内容。

标头的长度,固定为18字节,数据的长度最短为46字节,最长为1500字节,因此,整个帧最短64字节,最长为1518字节,如果数据很长的话,就会进行分割成多个帧进行发送。
在这里插入图片描述
        MAC地址
        以太网数据包的“标头”,包含了发送者和接受者的信息,那么发送者和接受者是如何标识的呢?
以太网规定,炼乳网络的所有设备,都必须具有网卡接口,数据包必须是从一块网卡,传送到另一块网卡,网卡的地址就是数据包的发送地址和接收地址,叫作MAC地址。Ip地址通常可以变,但是MAC地址是独一无二的,不会改变。

        广播(同一个子网络才能使用)
        通过ARP协议一块网卡可以知道另一块网卡的MAC地址,以太网数据包必须知道接收方的MAC地址才能发送。
有了MAC地址,系统怎样才能把数据包准确送到接收方?

向本网络内所有计算机发送,让每台计算机自己判断是否为接收方。

在这里插入图片描述
        上图中,1号计算机像2号计算机发送一个数据包,全部计算机都将收到,收到后,读取这个包的“标头”,找到接收方的MAC地址,然后与自身的MAC地址比较,如果两者相同,就接受这个包,做进一步处理,否则就丢弃这个包,这种方式叫作广播。

3、网络层

        网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。该层规定了通过怎样的路径(所谓的传输路线)到达对方计算机,并把数据包传送给对方。如果两台主机在不同的子网络,广播是传不过去的,只能通过路由的方式发送。这就导致了网络层的诞生,网络层出现后每台计算机就有了两个地址,一种是MAC地址,一种是网络地址,两者没有联系,MAC是绑定在网卡上的,网络地址是管理员分配的。

        网络地址(ip地址)帮我们确定了计算机所在的子网络,MAC地址将数据包送到该子网络中的目标网卡,先处理ip地址,在处理mac地址。

IP协议
        网络地址的协议叫作IP协议,它所定义的地址被称为IP地址
通过子网掩码可以两个任意的IP地址是否为同一个子网络,将两个IP地址分别与子网掩码进行AND运算,然后比较结果是否相同,如果是的话,表明所处同一个网络。

IP数据包
        IP协议发送的数据,就叫做IP数据包,其中包含IP地址信息。以太网数据包头只包含MAC地址,而IP数据包直接放入以太网数据包的数据部分。

IP数据包分为“标头”和“数据”
在这里插入图片描述
        标头部分主要包括版本、长度、IP地址信息,对数据部分则是IP数据包的具体内容,它放入以太网数据包后就变成了这样。
在这里插入图片描述
ARP协议
关于网络层,还需要补充的是。
        IP数据包是放入以太网数据包里发送的,所以我们必须知道两个地址,一个是对方的MAC地址,一个是对方的IP地址,通常IP地址是可知的,MAC地址是未知的,我们需要IP地址得到MAC地址,这就是ARP协议的诞生。

        ARP协议只用在局域网中,它用来将IP地址解析为MAC地址。局域网中的每个主机都有一个ARP缓存,它保存了最近发起的IP地址到MAC地址的映射记录,当该主机要向局域网中的某一主机发送数据时,它会先从自己的缓存中查找,看是否存在目标IP地址,如果找到,就通过映射找到它的MAC地址,从而发送过去,如果没有找到该目的IP地址,它就向该局域网内发送一个广播,广播中包含自己的IP地址、MAC地址和目的主机的IP地址,局域网内的所有主机都会收到该广播,但只有目的IP地址的主机会做出回应,并把自己的MAC地址发送给源主机,源主机收到后,在自己的ARP缓存中增加上该映射,并根据发来的MAC地址将数据发送给目的主机。

         ARP高速缓存中的表项一般都要设置超时值,如果一段时间内没有与某主机通信,就将该主机对应的IP与MAC之间的映射关系去掉,下次在需要通信时,依然发送广播。

         如果ARP请求是从一个网络的主机到另一个网络的主机,那么连接这两个网络的路由器就可以回答该请求,这个过程成为ARP代理。

        有下列两种情况
        1、两台主机不在同一个网络,是没有办法的到对方的MAC地址,只能把数据包传送到两个子网络连接处的“网关”,让网关去处理。
        2、如果两台主机在同一个网络,可以使用ARP协议,得到对方的MAC地址。ARP协议是发出一个数据包,其中包含它查询主机的IP地址,在对方的MAC地址这一栏,填的是FF::FF::FF::FF::FF::FF::FF,这是一个广播地址。通过广播的形式,它所在的子网络的每一台主机,都会收到这个数据包,从中取出IP地址,与自身的地址相比较,如果两者相同,就会做出回复,向对方报告自己的MAC地址,否则就丢弃这个包。

        有了ARP协议,就可以得到同一个子网络内的MAC地址,可以把数据包发送到子网络内的任意一台主机上。

4、传输层

        有了MAC地址和IP地址,我们就可以在互联网上任意两台主机上建立通信端口传来数据包,通过端口给特定的程序来使用。
        传输层的功能,就是建立端口到端口的通信,相比之下,网络层的功能是建立主机到主机的通信,只要确定主机和端口,就能就能实现程序间的交流。因此,UNIX系统就把主机+端口叫作“套接字“,有了它,就可以进行网络应用程序开发。

UDP协议
        现在,我们必须在数据包加入端口信息,这就需要新的协议,最简单的实现叫作UDP协议,它的格式几乎就是在数据前面加上端口号。

UDP数据包,也是“标头“和“数据“两部分组成。
在这里插入图片描述
        标头部分主要定义了发出端口和接收端口,数据部分就是具体的内容,然后把整个UDP数据包放入IP数据包的数据部分,IP数据包又是放在以太网数据包之中的,所以整个以太网数据包变成了下面这样:
在这里插入图片描述
TCP协议
         UDP协议的优点是比较简单,容易实现,缺点是可靠性比较差,一旦数据包发出来,无法知道对方是否收到,而TCP是可靠的连接,当数据包丢失会重传,而UDP数据包不会。
         它类似于有确认机制的UDP协议,每发出一个数据包都要确认,如果有一个数据包丢失,就收不到确认。
         TCP数据包和UDP数据包一样,都是内嵌在IP数据包的数据部分,TCP数据包没有长度限制,为了保证网络效率不会设置很大,UDP是由长度限制的。

5、应用层

        应用层决定了向用户提供应用服务时通信的活动。

        TCP/IP协议族内预存了各类通用的应用服务,比如FTP和DNS服务就是其中两类,HTTP协议也处于该层。

         应用程序收到传输层的数据,就要进行解读,其作用就是规定应用程序的数据格式。

        举例来说TCP协议可以为各种各样的程序传递数据,比如Email等,那么必须有不同协议规定电子邮件等格式,这些应用程序协议就构成了应用层。

最高的一层,直接面对用户,它的数据就放在TCP数据包的数据部分,以太网数据包就变成了下面这样。
在这里插入图片描述

网络同行就是交换数据包实现两台电脑见得通信,数据包的结构如上图

        发送这个包需要知道两个地址,一个是对方的MAC地址,一个是对方的IP地址,有了这两个地址,数据包才能准确送到接受者手中,但是前面说过,MAC地址有局限性,如果两台电脑在不同一个子网络,就无法知道对方的MAC地址,必须通过网关转发。
在这里插入图片描述
        如上图中,1号电脑要想往4号电脑发送一个数据包,它先判断4号电脑是否在同一个子网络,如果发现不是,就把这个数据包发到网关A,网关A通过路由协议,发现4号电脑位于网络B,就把数据包有发送给网关B,再让网关B转发到4号电脑。

所以1号电脑把数据包发到网关A,就必须知道网关A的MAC地址,所以有如下两种情况。
在这里插入图片描述
必须要下列四个参数才可以连接上网
在这里插入图片描述
        DNS协议可以把域名解析为IP地址(也可以把ip地址解析为域名),ARP协议可以把由ip地址知道mac地址。这样就可以知道ip地址和mac地址了。
在这里插入图片描述
        mac地址是给定的,ip地址是可以变化的

静态ip地址
         计算机每次开机前都会分到同样的IP地址叫作静态IP解析上网
动态ip地址
         计算机开机后,自动分配到一个IP地址,不用人为设定,它使用的协议叫作DHCP协议。

DHCP
        这个协议规定,每一个子网络,都有一台计算负责管理本网络的所有IP地址,叫作DHCP服务器,新的计算机加入网络,必须向DHCP服务器发送一个DHCP请求数据包,申请IP地址和相关的网络参数。
它是一种应用层协议,建立在UDP协议之上,整个数据包是这样的。
在这里插入图片描述
(1)最前面的"以太网标头",设置发出方(本机)的MAC地址和接收方(DHCP服务器)的MAC地址。前者就是本机网卡的MAC地址,后者这时不知道,就填入一个广播地址:FF-FF-FF-FF-FF-FF。
(2)后面的"IP标头",设置发出方的IP地址和接收方的IP地址。这时,对于这两者,本机都不知道。于是,发出方的IP地址就设为0.0.0.0,接收方的IP地址设为255.255.255.255。
(3)最后的"UDP标头",设置发出方的端口和接收方的端口。这一部分是DHCP协议规定好的,发出方是68端口,接收方是67端口。
(4)这个数据包构造完成后,就可以发出了,以太网是广播发送,接受方的MAC地址是FF-FF-FF-FF-FF-FF。看不出是发送给谁的,,必须分析这个包的IP地址,才能取确定发送给谁的。当看到发出方的IP地址是0.0.0.0,接受方式255.255.255.255,于是DHCP服务器知道这个包,其他计算机就丢弃这个包。
(5)接下来,DHCP服务器读出这个包的数据内容,分配好IP地址,发送回去一个"DHCP响应"数据包。这个响应包的结构也是类似的,以太网标头的MAC地址是双方的网卡地址,IP标头的IP地址是DHCP服务器的IP地址(发出方)和255.255.255.255(接收方),UDP标头的端口是67(发出方)和68(接收方),分配给请求端的IP地址和本网络的具体参数则包含在Data部分
(6)计算机你收到这个响应,于是就知道了自己的IP地址、子网掩码、网关地址、DNS服务器等参数。

注意区分
        DNS协议、DHCP协议、ARP协议
        DNS协议:是通过域名或者ip地址知道域名或ip地址
        DHCP协议:是新加入的计算机必须向所在的子网的DHCP服务器发送一个DHCP请求的数据包,申请自己的IP地址、子网掩码、等参数
        ARP协议:在子网络的情况下,通过广播的形式寻找MAC地址

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

深入浅析TCP/IP——TCP/IP五层模型 的相关文章

  • DNS 解析一个地址的时候会返回多个 IP 吗?

    这是一个或许对你有用的社群 一对一交流 面试小册 简历优化 求职解惑 欢迎加入 芋道快速开发平台 知识星球 下面是星球提供的部分资料 项目实战 视频 从书中学 往事上 练 互联网高频面试题 面朝简历学习 春暖花开 架构 x 系统设计 摧枯拉
  • 计算机网络(二):TCP篇

    文章目录 1 TCP头部包含哪些内容 2 为什么需要 TCP 协议 TCP 工作在哪一层 3 什么是 TCP 4 什么是 TCP 连接 5 如何唯一确定一个 TCP 连接呢 6 UDP头部大小是多少 包含哪些内容 7 TCP与UDP的区别
  • python TCP通信雷达实时解析数据

    雷达解析程序 coding cp936 import socket import re class jiema def yushe3 self receve r receve av receve v receve h while True
  • tcp和udp,通信协议

    1 什么是tcp和udp 常用的网络通讯 浏览网页 软件聊天等等 都是基于tcp和udp传输的 2 tcp和udp的区别是什么 1 最大的区别是一个基于连接 一个基于非连接 举例说明 如果把人与人之间的通信比喻为进程之间的通信 写信和电话
  • 【网络自定向下学习】——TCP报文段的详细解析

    个人主页 努力学习的少年 版权 本文由 努力学习的少年 原创 在CSDN首发 需要转载请联系博主 如果文章对你有帮助 欢迎关注 点赞 收藏 一键三连 和订阅专栏哦 目录 一 Tcp报文段的结构 二 首部长度 三 窗口大小 四 序列号和确认序
  • Windows平台下MingGW的网络socket编程模型

    Windows平台下MingGW的网络socket编程模型 1 TCP服务器 include
  • F5 BIG-IP LTM基础资料

    F5 BIG IP网络概述 TMOS是一个全代理的体系结构 流量必须穿越BIG IP设备以获得TMOS的优化效果 部署方式 路由模式 也被称作串联模式 真实服务器放在BIG IP之后的一个内部网络 真实服务器的网关需要指向 或者最终通过 B
  • TCP/IP、UDP协议

    TCP IP协议是Internet最基本的协议 Internet国际互联网络的基础 由网络层的IP协议和传输层的TCP协议组成 通俗而言 TCP负责发现传输的问题 一有问题就发出信号 要求重新传输 直到所有数据安全正确地传输到目的地 而IP
  • 整型和IP地址之间的转换(Java实现)

    整型和IP地址之间的转换 Java实现 在Java编程中 有时我们需要将整型数据与IP地址之间进行转换 整型和IP地址表示的是不同的数据类型 但是它们之间可以相互转换 下面我将为你提供一种在Java中实现整型与IP地址互相转换的方法 将整型
  • TCP快速重传机制

    一 快速重传机制 上一篇讲到了TCP 的超时重传 但是超时重传往往会带来许多微妙的问题 比如说 当一个报文段丢失时 会等待一定的超时周期然后才重传分组 增加了端到端的时延 当一个报文段丢失时 在其等待超时的过程中 可能会出现这种情况 其后的
  • Go渗透测试笔记(二)---TCP,扫描器和代理

    Go渗透测试笔记 二 TCP 扫描器和代理 0x00 前言 TCP是面向连接协议的主要标准 也是现代网络的基础 作为攻击者 我们应当了解TCP的工作原理 并且能够开发可用的TCP结构体 以便可以识别 打开 关闭 的端口 找出错误的结果 如误
  • TCP对方关闭对应的进程,调用Send将会产生Broken pipe信号默认会关闭进程

    解决 Linux下send函数 Broken pipe错误的解决方法 http www xootus net cache shtml 52 content 491 htm
  • STM32H750+LAN8720无操作系统移植lwip

    前言 本文提供移植好的工程 仅使用串口和以太网外设 见本文绑定资源 环境 STM32CubeMX V6 8 1 STM32H7 HAL Pack V1 11 1 硬件连接 STM32H750 GPIO定义如下 LAN8720 GPIO定义如
  • 探讨Socks5代理IP在跨境电商与网络游戏中的网络安全应用

    随着全球互联网的迅猛发展 跨境电商和在线游戏成为了跨国公司和游戏开发商的新战场 然而 与此同时 网络安全问题也日益突出 本文将探讨如何利用Socks5代理IP来增强跨境电商和网络游戏的网络安全 保障数据传输的隐私和安全性 第一部分 Sock
  • Linux TCP链接查看和调整

    查看Linux的TCP连接数的方法如下 统计80端口连接数 netstat nat grep i 80 wc l 统计httpd协议连接数 ps ef grep httpd wc l 统计已连接上的 状态为 established 的TCP
  • Windows实例如何通过本地安全策略限制远程登录的IP地址

    Windows实例如何通过本地安全策略限制远程登录的IP地址 阿里云 禁止所有的IP地址连接服务器的RDP端口 远程连接登录服务器 单击 开始 选择 运行 输入gpedit msc 单击 确定 打开本地组策略编辑器 在左侧依次找到 计算机配
  • 工业RFID读写器性能参数解析

    工业RFID读写器的性能参数主要有以下几项 工作频率 输出功率 输出接口 读写器类型 工作方式 读写器优先或电子标签优先等 1 工作频率 RFID读写器的工作频率是指其工作的频率范围 通常由读写器的工作频率决定 同时要与电子标签的工作频率保
  • linux下查看所有tcp端口情况

    netstat ntlp
  • 分辨公网IP和内网IP的方法

    公网IP一般就是对外的访问地址 内网IP就是对内的访问地址 两者的使用范围是不一样的 那如果区分客户网络的IP地址是公网IP地址还是内网IP地址呢 公网IP的地址范围是很广泛的 我们可以先了解下内网IP 因为内网IP的地址段相对是局限的 一
  • 搞懂 三次握手四次挥手

    计算机网络体系结构 在学习TCP 三次握手四次挥手之前 让我们先来看下计算机网络分层 主要分为OSI模型和TCP IP模型 OSI模型比较复杂且学术化 所以我们实际使用的TCP IP模型 以连接Mysql服务器为例理解这五层 应用层 应用层

随机推荐

  • 【华为OD机试真题 python】组装新的数组【2023 Q1

    题目描述 组装新的数组 给你一个整数M和数组N N中的元素为连续整数 要求根据N中的元素组装成新的数组R 组装规则 1 R中元素总和加起来等于M 2 R中的元素可以从N中重复选取 3 R中的元素最多只能有1个不在N中 且比N中的数字都要小
  • python格式化输出,format,数据类型转换。

    输出 计算机给用户输出的内容 是一个由里到外的一个过程 例如python语言中的print函数 输入 则相反 例如input函数 一 输出有普通的输出 也有格式化输出 普通输出 类似于 print hello word 这样直接打印 格式化
  • 为高尔夫比赛砍树

    为高尔夫比赛砍树 你被请来给一个要举办高尔夫比赛的树林砍树 树林由一个 m x n 的矩阵表示 在这个矩阵中 0 表示障碍 无法触碰 1 表示地面 可以行走 比 1 大的数 表示有树的单元格 可以行走 数值表示树的高度 每一步 你都可以向上
  • 系统篇: squashfs 文件系统

    一 squashfs简介 Squashfs是一套基于Linux内核使用的压缩只读文件系统 该文件系统能够压缩系统内的文档 inode以及目录 文件最大支持2 64字节 特点 数据 data 节点 inode 和目录 directories
  • 虚幻C++ http请求

    直接上代码 Fill out your copyright notice in the Description page of Project Settings pragma once include CoreMinimal h inclu
  • 测试岗?从功能测试进阶自动化测试开发,测试之路不迷茫...

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • Mock框架应用(四)-Mock 重定向请求

    例一 先新建json配置文件重定向到www baidu com 启动mock服务 description 实现重定向的请求 request uri redirect redirectTo https www baidu com respon
  • Go并发(goroutine)及并发常用模型的实现

    前言 Go 语言最吸引人的地方是它内建的并发支持 作为天然支持高并发的语言 写并发比java和python要简单方便的多 在并发编程中 对共享资源的正确访问需要精确的控制 在目前的绝大多数语言中 都是通过加锁等线程同步方案来解决这一困难问题
  • 疯壳-MTK智能电话手表开发整板测试

    目录 内容简介 3 第一节 开机 4 第二节 绑定 5 第三节 功能测试 9 3 1 屏幕测试 9 3 2 SIM通信测试 11 3 3 SIM 测试 12 3 4 GPS测试 14 3 5 手表对时 18 官网地址 https www f
  • 1449 砝码称重 51NOD

    1449 砝码称重 题目来源 CodeForces 基准时间限制 1 秒 空间限制 131072 KB 分值 40 难度 4级算法题 现在有好多种砝码 他们的重量是 w0 w1 w2 每种各一个 问用这些砝码能不能表示一个重量为m的东西 样
  • flink中idea配置pom.xml

  • JS之预解析

    javascript 的预解析 个人理解 就是js代码在执行之前 会在相应的执行环境中 预先把 一些东西解析到内存 如果理解错误 请多多指正 一 那究竟预先解析哪些东西那 答 预先解析 function 和 var 二 还有就是预解析的顺序
  • 分布式一致算法

    一 拜占庭将军问题 拜占庭将军问题 拜占庭派多支军队去围攻一个敌人 将军不确定军队中是否有叛徒 叛徒可能擅自变更进攻决定 至少一半以上的军队同时进攻才可以取胜 在这种状态下 拜占庭将军们能否找到一种分布式的协议来让他们能够远程协商 从而就进
  • go 进阶 go-zero相关: 二. 服务启动与路由,中间件注册,请求接收底层原理

    目录 一 问题概述 二 底层源码分析 涉及到的一些结构体简介 初始化 中间件的预设置 路由注册与中间件的处理 启动服务到触发net http 接收请求的处理 三 总结 一 问题概述 了解go zero底层也是基于net http标准库实现h
  • 【树莓派】Linux内核编译

    树莓派 Linux内核编译 树莓派的Linux内核编译有两种方法 一种是在树莓派上直接编译 另一种是利用交叉编译的方法 一般我们都推荐采用交叉编译的方式进行编译 这是因为通常交叉编译Pi内核的速度比Pi本身编译快得多 性能因素 下面就讲下如
  • Maya致命错误解决方法

    因 此故障可能是由于 OpenCL 解决方案 禁用 OpenCL 通过添加 MAYA DISABLE OPENCL 1 到Maya env 复制引号里面部分 文件位于以下位置 c users username documents maya
  • Python自动合并Word文件并添加分页符的方法

    Python自动合并Word文件并添加分页符的方法 在本篇文章中 我们将介绍如何使用Python自动合并多个Word文件 并在合并后的文档中添加分页符 我们将使用Python的python docx库来处理Word文档 该库提供了丰富的功能
  • CMake动态库生成及使用

    命令行生成动态库 现有hello h 和 hello cpp文件 生成动态库 g c fPIC hello cpp hello h c 生成 o文件 fPIC 生成与位置无关的代码 动态库 g shared fPIC o libhello
  • vue——路由之路由跳转、路由传参、路由嵌套、路由模式

    相关认识 后端路由 对于前端的网络请求 不同的pathname 去执行后端的不同业务 前端路由 不同的网址对应各自的页面 vue的前端路由 SPA应用要做出路由效果 就得判断当前网址 然后切换组件 vue router就是专门做切换组件的功
  • 深入浅析TCP/IP——TCP/IP五层模型

    TCP IP五层模型 一 TCP IP五层模型 1 实体层 2 链路层 3 网络层 4 传输层 5 应用层 一 TCP IP五层模型 层与协议的关系 每一层为了完成一种功能 定义了一种规则 这个规则叫作互联网协议 1 实体层 把电脑连接起来