数据链路层、网络层、传输层----网络通信原理

  • 物理层
  • 数据链路层
    • eNSP抓包实验
  • 网络层
    • ICMP协议概述
    • eNSP抓包实验
    • ARP协议概述
    • eNSP抓包实验
  • 传输层
    • TCP协议
    • eNSP抓包
    • 三次握手、四次挥手
    • UDP协议
    • eNSP抓包

物理层

物理层是TCP/IP模型的最底层,物理层定义其设备的物理特性、电气特性等,比如网络接口卡、中继器、集线器、网线、无线电
物理层作用确保设备之间连接正常,包括建立、维护和断开物理连接等,物理层传输数据是通过电信号中的高低电压和低电压,也就是0101010的比特流。

数据链路层

数据链路层位于物理层和网络层之间
主要功能:逻辑连接的建立、维护、拆除,物理寻址,差错校验等,完成同网段的互通。


以太网

  • 我们平常使用的网络设备,数据链路都是Ethernet,所以通常使用的网络都称之为以太网。
  • 以太网中可以同时连接多个设备,所以又称为广播型网络

以太网数据帧格式

在以太网数据传输时是通过MAC地址来区分数据来自哪里,去往哪里。
MAC地址 全球唯一的一个地址、物理地址、网卡地址。
MAC地址的组成:前24bit(厂商编号)+后24bit(厂商具体生产的网卡号) 一共 48bit(bit代表0或 1)
8个bit(位)为一个字节

  • 目的地址:接收主机的MAC地址
  • 源地址:发送数据主机的MAC地址
  • 类型:表示上层在处理数据时用的什么协议,在此处标记出来
  • 数据:就是用户发出来的数—图片 文字 文档
  • 帧校验序列:他是核对用的,主要是查看数据是否被破坏,数据是好的话就接收
  • 整个数据帧最大是多少: 6+6+2+1500+4 =1518个字节
  • 整个数据帧最小是多少:6+6+2+46+4=64个字节

eNSP抓包实验

在以太网数据通信过程中,来自网络层的数据包会在在数据链路层装上MAC头部尾部帧校验序列,其中MAC头部就包含目标主机和自己的MAC地址,那么计算机是如何知道对方主机的MAC地址呢。我们通过抓包来观察通信流程。

  • 以太网内的两台主机在第一次通信时,发送方并不知道接收方的mac地址,所以在通信前会以广播的形式发送一个ARP包询问192.168.1.2主机的mac地址,当主机192.168.1.2收到这个请求包时会回复给主机192.168.1.1自己的mac地址,同时在以太网中的其它主机也会收到ARP包,但是打开看并不是给自己的就会将这个包丢弃掉。
  • 主机192.168.1.1在收到目标主机的MAC地址后,才会进行数据帧的封装,封装完成后进行传输数据。

网络层

  • 网络层位于OSI模型的第三层
  • 作用:定义网络设备的逻辑地址,俗称网络层地址(如IP地址),在不同网段之间选择最佳路径转发数据
  • 协议:IP、ICMP、ARP、IPX、AppleTalk等协议

IP数据报格式

  • 每一个位置为一个字段,如版本字段、首部长度字段、标识符字段等
  • IP数据包的单位是32bit,即4字节,每一行的内容是32bit
  • IP报头的固定部分为20字节,分为5行,每一行的32bit(4字节)
  • 每个括号里的数字代表用多少二进制数来表示这个地段
  • IP报包有两部分组成:固定部分和可选项部分

首部由两部分组成:固定部分和可变部分
首部:固定部分(20个字)+可选项(0-40个字节,一般情况没有)

  • 版本:指的是IP地址的版本(IPV4,IPV6)

  • 首部长度:此数据包的部长度一共是多少,有没有可选项

  • 优先级与服务类型:表示数据包是否需要优先传递。如果有值为1如果没有值为0

  • 总长度:表示的是整个数据包的大小,也就是首部+数据

  • 标识符:表示数据包的编号,每一个数据包都有一个唯一的编号

  • 标志、端偏移量:将拆开的数据包进行组合

  • TTL值:数据生命周期当此值得数字变为0时,该数据包就被丢弃,每经过一台路由器TTL值减1

  • 协议号:数据包在网络中传递是所用的协议。

当编号为1时,表示上层用的是ICMP协议—是网络层的协议
当编号为6时,表示上层用的是 TCP协议–传输层的协议
当编号为17时,表示上层用的是 UDP协议–传输层的协议

  • 首部校验和:是用来做数据包核对用的,确定数据包是否是完整,如果是就接收,如果不是完整的数据包,不接收该数据包,让重新发送(整个过程不需要我们来做,设备自己进行计算)
  • 源地址:发送方IP地址
  • 目标地址:接收方IP地址
  • 可选项:他是一个可变长度,取值范围:0-40个字节 一般数据包中不是加该选项的,什么情况下加该选项:当想要传输用户 密码 软件使用场景是会用到该字段
  • 数据:他是应用层发出的数据-----在数据包中体现,单独看不到

科来抓包分析ip数据报格式

ICMP协议概述

  • ICMP(internet Control Message Protocol),网络控制消息协议
  • 位于OSI模型第三层,即网络层

作用:在IP网络中发送控制消息,提供可能发生在通信环境中的各种问题的反馈,从而为网络连通性测试以及网络故障定位提供有效的指示信息。

ICMP协议封装:ICMP协议属于网络层协议

  • 传输ICMP信息时,要先封装ICMP头部
  • 然后在封装IP头部
  • 最后再交给数据链路层

eNSP抓包实验

  • Echo Request,请求报文
  • Echo Reply,相应报文

常见的ping反馈结果

  • 连接建立成功,Reply from目的地址
  • 目标主机不可达,Destination host unreachable
  • 请求超时,Request timed Out

出现Destination host unreachable一般是本机网络配置出现问题
出现Request timed Out可能是目标主机或者传输路径出现问题

ARP协议概述

ARP(address resolution protocol):地址解析协议

  • ARP协议属于OSI模型的第三层(网络层)
  • 主要作用:基于目标IP地址获得对应目标的MAC地址,从而完成数据帧的二层头部封装,实现数据的快速转发

ARP报文类型

  • ARP请求报文,源设备以广播的方式发送,向所有设备请求MAC地址
  • ARP回应报文,目标设备以单播的方式回应,直接返回给原设备

ARP核心工作表

  • ARP表,包含的IP地址与MAC地址的对应关系条目
  • ARP条目分为静态和动态的两种类型
  • 动态ARP条目的存活时间是1200s

任何设备发数据的原理

  • 任何设备在发数据包之间,都会检查ARP表,查看包含去往目标IP地址时所使用的的MAC地址
  • 如果ARP表包含目标IP地址对应的条目,则使用目标MAC地址封装数据
  • 如果ARP表不包含目标IP地址对应的条目,则发送ARP请求,获得目标的MAC

eNSP抓包实验



请求主机会根据收到的ARP回应包实施更新ARP表

传输层

  • 传输层:传输层位于网络层和应用层之间

  • 作用:传输层提供端到端的连接(不同端口号,代表不同的应用程序)

  • TCP(Transmission Control Protocol)

  • 传输控制协议

  • 可靠的、面向连接协议

  • 传输效率低(建立连接需要很长的时间)

  • UDP(User Datagram Protocol)

  • 用户数剧报文协议

  • 不可靠的、无连接的服务

  • 传输效率高(无需建立连接、速度快)


TCP协议


TCP报文分为两部分:TCP头部,数据部分

  • TCP头部可能含有可选项内容,因此TCP报头的长度是不确定的
  • 报头不包含任何可选字段,则长度为20字节,报头最大长度为60字节

TCP报文头部内容

  • 源端口:源端口和IP地址的作用是标识报文的发送地址
  • 目的端口:指明接收方计算机上的应用程序接口(源端口是随机的,目标端口是固定的,一般指服务器。一共有65535个端口号,其中0-1024是常用的端口 )
  • 序列号和确认号:在TCP传送一个数据包时,它会把这个数据包放入重发队列中,同时启动计时器,如果收到了关于这个包的确认信息,便将此数据包从队列中删除,如果在计时器超时的时候仍然没有收到确认信息,则需要重新发送该数据包。TCP通过数据分段中的序列号来保证所有传输的数据可以按照正常的顺序进行重组,从而保障数据传输的完整。如果一个报文段的起始序号为158,此报文段数据部分的大小为100字节,则下一个报文段的序号为258。
  • 首部长度:此报文的长度是多少,有没有可选项
  • 保留:为将来定义新的用途保留,现在一般置0
  • 控制位
    URG=1 代表紧急指针开启紧急指针:特别着急的数据段优先传递
    ACK=1 代表同意建立连接
    PSH=1 代表开启缓冲区(临时存放数据的)
    RST=1 数据没有传输完成断开了,在次请求建议连接
    SYN=1 代表请求建立连接
    FIN=1 代表请求断开连接
  • 窗口大小:代表数据在发送之前,设备间需要协商,依照最小单位为准发送数据
  • 校验和:此校验和是对整个TCP报文段,包括TCP头部和TCP数据部分

eNSP抓包

  • 建立如图拓扑
  • 配置web服务站点
  • 客户机访问web服务



三次握手、四次挥手

三次握手

  • 第一次:主机A发送SYN请求建立连接 seq=0 syn=1
  • 第二次:主机B回应并发起连接seq=0、ack=1, ACK=1,syn=1
  • 第三次:主机A回应,seq=1、ack=1,ACK=1


四次挥手

  • 第一次:主机A请求断开连接,FIN=1、ACK=1
  • 第二次:主机B发送确认信息,ACK=1
  • 第三次:主机B请求断开连接,FIN=1、ACK=1
  • 第四次:主机A确认收到请求,ACK=1

UDP协议

DUP报文格式

  • 源端口:源端口和IP地址的作用是标识报文的返回地址
  • 目的端口:目标端口指明接收方计算机上的应用程序接口
  • 16位UDP长度:代表整个UDP的数据报是多大----8字节
  • 16位UDP校验和:是一个检查机制,在发送数据包之前检查一下数据包的完整性。
  • 数据: 就是应用所有产生的数据了

eNSP抓包

在客户机上模拟UDP发包


常见基于UDP的应用

数据帧、IP数据包、TCP、UDP报文格式详解----网络通信原理相关推荐

  1. TCP/IP(五):UDP 报文格式详解

    1.概述 UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连 ...

  2. tcp报文格式udp报文格式详解

    http://blog.csdn.net/a19881029/article/details/29557837 TCP(Transmission Control Protocol)传输控制协议是一种面 ...

  3. 54.UDP报文格式详解

    相比 TCP 协议,UDP 协议的报文结构相对简单.本节将详细讲解 UDP 报文的格式. UDP 报文格式 每个 UDP 报文分为 UDP 报头和 UDP 数据区两部分.报头由 4 个 16 位长(2 ...

  4. JavaEE|TCP/IP协议栈之TCP协议端格式详解

    文章目录 一.对TCP协议的感性认识 简介 特点 二.TCP的报文结构 概览 16位端口号和16位目的端口号 32位序号和32位确认序号 4位首部长度 保留位(6位) 6个标志位 16位窗口大小 16 ...

  5. TCP/UDP报文格式及各种通信机制简介

    TCP/UDP报文格式及各种通信机制简介 一.UDP报文 二.TCP报文 三.TCP通信机制 1,确认应答机制 2,超时重传机制 3,滑动窗口及快重传机制 4,流量控制 5,拥塞控制及慢启动机制 6, ...

  6. TCP/UDP报文格式

    TCP/UDP报文格式 TCP 协议为终端设备提供了面向连接的.可靠的网络服务,UDP 协议为终端设备提供了无连接的.不可靠的数据报服务.从上图我们可以看出,TCP 协议为了保证数据传输的可靠性,相对 ...

  7. 【Socket网络编程】7.以太网数据包、IP数据包、UDP数据包

    以太网数据包.ip数据包.udp数据包 搭配这篇博文服用,效果更好:数据封装 和 数据拆封:https://blog.csdn.net/u011754972/article/details/11794 ...

  8. TCP/IP:TCP/UDP报文格式

    目录 TCP报文格式 UDP报文格式 TCP报文格式 报文格式 图1 TCP首部格式 字段 长度 含义 Source Port 16比特 源端口,标识哪个应用程序发送. Destination Por ...

  9. 网络基础知识(TCP/UDP报文格式)四

    1.TCP报文格式 源端口号: 占用16位,报文来自哪个端口. 目的端口号: 占用16位,报文要传输到哪个端口. Seq序列号: 占用32位,一次TCP通信(从TCP连接建立到断开)过程中某一个传输方 ...

最新文章

  1. 计算机网络实验ip数据报转发,计算机网络实验报告三网际协议IP.doc
  2. 【剑指Offer】从尾到头打印链表
  3. 图解Oracle用户管理
  4. 动手学深度深度学习-pycharm中配置mxnet开发环境
  5. linux 初始化内存管理_Linux内存管理第二章 -- Describing Physical Memory
  6. layui表格合并单元格多表_layui动态表格之合并单元格
  7. Struts2拦截器之FileUploadInterceptor
  8. ORA-28056:Writing audit records to Windows Even...
  9. 三层聚合实验的注意事项
  10. [bzoj 2726] 任务安排 (斜率优化 线性dp)
  11. 前端学习(2354):image组件的基本使用
  12. java考前复习之Scanner 类
  13. js ---- 对象转JSON,JSON转对象
  14. java 实现电子签名_java swing实现手写板电子签名系统
  15. VSCode 摸鱼神器
  16. 阿尔伯塔大学计算机专业世界排名,加拿大学生最满意的TOP20大学排名
  17. Wifi文件传输项目总结
  18. Unity 钓鱼玩法的初步实现
  19. oppoa5降级教程_OPPOR11S线刷降级旧版本可以吗?Colors版降到3.2没问题
  20. 鲁大师被win10识别为病毒?

热门文章

  1. PrintWriter
  2. 均方误差、均方根误差
  3. Pyqt5设置刻度尺
  4. Typora如何恢复没保存的文件
  5. linux find 递归搜索文件名
  6. Typecho博客搭建教程
  7. Windows Service编程
  8. 1041A--Heist
  9. 数据分析师培训机构告诉你:3分钟教你如何快速成为数据分析师!
  10. 支付系统设计白皮书:支付系统的概念与架构