网络服务——网络层:IP、ICMP、ARP与传输层:TCP、UDP

news/2024/5/18 12:07:36 标签: udp

文章目录

  • 一、网络层
    • 1、IP数据包格式
    • 2、ICMP协议
    • 3、ARP协议
  • 二、传输层
    • 1、TCP协议
      • 1.1、TCP报文段
      • 1.2、TCP 三次握手
      • 1.3、TCP 四次挥手
      • 1.4、TCP端口号
    • 2、UDP协议


一、网络层

网络层的功能

  • 定义了基于IP地址的逻辑功能
  • 连接不同的媒介类型
  • 选择数据通过网络的最佳路径

网络层主要的媒介是路由器,同一个网络不需要路由器,不同网络就需要使用路由器,网络层的主要协议是:IP;其余四个协议:ICMP、IGMP、ARP、RARP是围绕IP展开的。

1、IP数据包格式

在这里插入图片描述
版本:识别是IPV4(OX40)还是IPV6,基本上是IPV4;
首部长度:不带数据的IP包头部长度;
优先级与服务类型:定义IP数据包是否优先传送;
总长度:定义IP数据包总长度是多少;
标识符:用于IP数据包的分片,给每个分片打标;
标志:标志和分片一起被用来船体信息分片之后,是否分片;
段偏移量:分片之后需要重组,根据原有的顺序排列,保证是一个完整正确的顺序传输;
TTL:Time to live,网络中生存时间,每经过一个路由器减一,减到0后数据包就被丢弃了,IP包被路由器丢弃之前允许通过的最大网段数量;
协议号:标志了上层数据,是TCP,还是UDP?
首部校验和:为了数据的传输完整,会进行一个校验,如果出错或者丢包会进行重传;
源地址:从哪发出,发送数据包的设备网络地址;
目标地址:发哪去,接收点的设备网络地址;
可选项:根据实际情况可变长,可以和IP一起使用的选项有多个。

2、ICMP协议

ICMP协议用于IP主机、路由器之间传递控制消息,这里的控制消息可以包括很多种,从TCP/IP的分层结构看ICMP属于网络层,它配合着IP数据报的提交,提高IP数据报递交的可靠性; 主要功能是发送错误消息,不用于传输数据

  • 协议包含以下三点功能

    • ICMP是一个“错误侦测与回馈机构”
    • 是通过IP数据包封装的
    • 用来发送错误和控制消息
  • ICMP协议的封装分为2部分介绍

    • ICMP协议属于网络层协议
    • ICMP数据的封装过程,如下图,ICMP是封装在IP数据报中进行发送的
      在这里插入图片描述
  • 协议Ping
    PING命令是用来检查要到达的目标IP地址并记录结果,显示目标是否响应以及接收答复所需的时间。如果在传递到目标过程中有错误,ping 命令将显示错误消息。

    • Ping命令
      命令的基本格式:
C:\ping[-t][-l字节数][-a][-i] IP_Address| target_name

举例说明

PC>ping 192.168.1.3

Ping 192.168.1.3: 32 data bytes, Press Ctrl_C to break
From 192.168.1.3: bytes=32 seq=1 ttl=128 time=47 ms
From 192.168.1.3: bytes=32 seq=2 ttl=128 time=63 ms
From 192.168.1.3: bytes=32 seq=3 ttl=128 time=62 ms
From 192.168.1.3: bytes=32 seq=4 ttl=128 time=63 ms
From 192.168.1.3: bytes=32 seq=5 ttl=128 time=62 ms

--- 192.168.1.3 ping statistics ---
  5 packet(s) transmitted
  5 packet(s) received
  0.00% packet loss
  round-trip min/avg/max = 47/59/63 ms

在这里插入图片描述

  • Ping抓包对应的消息类型和编码类型:
    在这里插入图片描述
    这些是在Ping抓包的时候,没有抓到包对应的报错信息。
    请求是发广播,应答是发单播。

    • Ping命令返回信息的含义
 -t:参数会一直不停的执行Ping
 -a:可以显示参数主机的名称
 -l:参数可以设定Ping包的大小,ping -l 后面跟着单位参数

如下图
在这里插入图片描述

3、ARP协议

  • 协议概述
    地址解析协议,基本功能为透过目标设备的IP地址,查询目标设备的MAC地址,以保证通信的顺利进行。主要作用于网络层IPv4中的协议。
  • 工作原理
    • IP地址解析为MAC地址
      比如电脑PC1发送数据给PC2,查看ARP缓存没有PC2的MAC地址,那么PC1发送ARP请求消息(广播),然后所以主机就能接收到ARP请求信息,PC2回应ARP应答(单播),其他主机丢弃数据。
      ARP有Rquest(请求消息)和Reply(应答消息)
    • 动态ARP老化时间 180s,静态没有老化时间

问:pc1需要给pc2发送数据原理?其中设置mac地址:pc1为11,pc2为22
答:pc1会发数据给pc2,首先查看arp缓存表,源ip10.0.0.1,源mac11,向pc2发送广播,这时候pc2接收到会回应pc1并且回应,这时候源ARP地址就10.0.0.2,源Mac地址变成22,其他无关的主机就会丢弃数据。

  • ARP的报文结构
    在这里插入图片描述
    以太网首部,指的帧头的MAC目的地址和源地址,是ARP的帧头
    帧类型:ARP,0P:0是请求,1是回应。
  • ARP相关命令**
    • arp-a 查看ARP缓存表
    • arp-d 清除ARP缓存
    • ARP绑定
  • ARP原理
    在这里插入图片描述
    需求分析:
    对等网的环境
    PC1和PC2第一次通信

实现步骤:

  1. 使用ipconfing/all查看PC1和PC2的MAC地址
  2. 用“arp-a”查看ARP缓存
  3. 在PC1上ping PC2后,再用“arp-a”查看ARP缓存
  • ARP攻击原理
    • 欺骗其他所有计算机
    • 欺骗被攻击计算机 (这两点主要是让你上不了网)
    • ARP欺骗网关,如下图(ARP没有检查的机制,所以来信息就会被记录上,窃取信息)。在这里插入图片描述※ARP欺骗主机
      ※利用ARP欺骗管理网络
      通过长角牛网络监控机软件管理网络
  • ARP的故障处理
    使用ARP防火墙,自动抵御ARP欺骗和攻击
    • 在主机B上开启ARP防火墙
    • 在主机A上开启长角牛网络监控机,模拟ARP病毒
    • 查看ARP防火墙统计数据的变化
    • 在主机B上测试与网关的连通性。

二、传输层

传输层的功能:定义传输数据的协议端口号,以及流控和差错校验,主要的协议是:TCP、UDP

1、TCP协议

全称: 传输控制协议, 顾名思义, 就是要对数据的传输进行一定的控制

  • 是面向连接的、可靠的进程到进程通信的协议:是指在每一次我访问之前,先进行一个连接,建立一个安全的通道;
  • 提供全双工服务,即数据可在同一时间双向传输
  • TCP报文段:因为传输层的协议是数据段,TCP是传输层的主要协议
    TCP将若干个字节构成一个分组,叫报文段
    TCP报文段封装在IP数据报中

1.1、TCP报文段

在这里插入图片描述
序号: 发送的时候会给每个字节进行编号,编号是为了重组用的;
确认号 用于确认已接收发送端的信息,和序号是一对;
首部长度:tcp整个头部的长度;
保留6个控制位:URG AVK PSH SYN FIN ;
窗口大小:网络传的通道,若没有其他数据传输时,就把通道改大,数据就会传输的多且快,反之同理;
校验和:校验数据是否完整;
六个控制位分别的意思
FIN 当TCP断开连接时将该位置为1
RST 重传的机制
PSH 当数据在传输过程中因意外关闭,或者对方拒绝请求,该值置为1
URG:紧急指针字段有效.他告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级数据),而不要按原来的排队序列来传送;
SYN:同步序列号位,TCP需要建立连接时需讲此位设置为1;
ACK:确认序号位,当该位为1时,用于确认发送方。

1.2、TCP 三次握手

TCP建立连接的过程叫三次握手
在这里插入图片描述

  1. 客户端产生初始化序列号Seq=x,向服务端发送建立连接的请求报文,将SYN=1同步序列号;
  2. 服务端接收建立连接的请求之后,产生初始化序号Seq=y,确认客户端的SYN(Ack=x+1),向客户端发送建立连接的请求(SYN=1),确认客户端的数据(ACK=1)
  3. 客户端收到服务端的回复(Ack=y+1,包含收到请求,确认信号),ACK=1,确认客户端的数据,三次握手成功

1.3、TCP 四次挥手

在这里插入图片描述

  1. 客户端发送断开连接(FIN=1)请求给服务端,断开连接确认(ACK=1),第一次挥手;
  2. 服务端接收到断开连接的请求,发回一个ACK确认包,第二次挥手;
  3. 服务端再次确认(ACK=1)请求断开服务器(FIN=1),第三次挥手;
  4. 最终客户端确认断开连接请求(ACK=1),第四次挥手

拓展:2和3需要两步的原因是什么?
第一次接收到客户端的请求时,但是服务器的数据并没有传输完成,待我把数据传输完成之后就可以关闭连接了;第四次挥手也没有真正的关闭,需要经过一个time-wait:2msl,存在的原因是等个1-4分钟确认未发送完成的数据发送完成。

1.4、TCP端口号

常用的端口号及其功能
在这里插入图片描述

2、UDP协议

全程:用户数据报协议

  • 是一种无连接,不可靠的传输协议
  • 优点是花费的开销小

UDP报文的首部格式如下:
在这里插入图片描述
UDP长度:用来指出UDP的总长度,为首部加上数据
校验和:用来完成对UDP数据的差错校验,他是UDP协议提供的唯一可靠机制

  • 常用的UDP端口号及其功能
    在这里插入图片描述

http://www.niftyadmin.cn/n/1115480.html

相关文章

重写equals和hashcode

equals()方法 Object类中的equals方法和“”是一样的,没有区别,即俩个对象的比较是比较他们的栈内存中存储的内存地址。而String类,Integer类等等一些类,是重写了equals方法,才使得equals和“不同”,他们比…

GDB调试多进程程序

[gdb manaul]https://sourceware.org/gdb/current/onlinedocs/gdb/Forks.html#Forks [参考]http://www.cnblogs.com/zhenjing/archive/2011/06/01/gdb_fork.html [参考]http://blog.chinaunix.net/uid-23062171-id-4107159.html gdb没有对fork创建的进程调试做特别的支持。如果…

Java 第十一周总结

转载于:https://www.cnblogs.com/shenghuizhang/p/6831826.html

网络服务——网络层--路由器

文章目录前言一、路由器的工作原理1、路由器的作用2、路由表的形成二、静态路由和默认路由1、静态路由2、默认路由3、转发数据包的封装过程4、交换机与路由的对比三、课后小实验前言 路由器工作于OSI参考模型的网络层。它的主要作用是为数据包选择最佳路径,最终送达…

python之路-基础篇-第二周

一、Python解释器: cpython为默认解释器,由C语言开发,目前使用最为广泛。jpython 运行在Java平台上的python解释器,可以直接把Python代码编译成Java字节码执行;与之类似的还有IronPython(.net)P…

用Java实现AES/CBC/PKCS7Padding加解密

2019独角兽企业重金招聘Python工程师标准>>> 开发微信小程序的时候,第三方应用服务器需要解密微信服务器给的加密数据。当时小程序官方没有给出Java实现。网上的解决方案基本都差不多,但是示例代码不够清晰,逻辑混乱,这…

阿里重磅发布大规模图神经网络平台AliGraph,架构算法解读

图神经网络(GNN)主要是利用神经网络处理复杂的图数据,它将图数据转换到低维空间,同时最大限度保留结构和属性信息,并构造一个用于训练和推理的神经网络。在实际应用中,为了加速GNN训练和新算法的快速迭代,设计一套统一…

hibernate插入CLOB大数据类型

2019独角兽企业重金招聘Python工程师标准>>> HibernateTemplate对CLOB对象操作,No LobHandler found for configuration... 利用HibernateTemplate对CLOB对象操作Oracle中的varchar2对象最多只能存4000个字节,对于要进行大批量字符对象的存储来说显然是远…