zoukankan      html  css  js  c++  java
  • 杂乱的计算机网络基础

    (本文仅为平时学习记录,若有错误请大佬指出,如果本文能帮到你那我也是很开心啦)

    一、网络设备

    1.网卡:是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件,由于其拥有MAC地址,因此属于OSI模型的第1层

    • MAC地址=厂商标号+序列号(48位)

    2.集线器(Hub):用来扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上,工作于OSI模型第一层

    3.交换机(Switch):是一种用于数据转发的网络设备,利用ARP表获取MAC和IP的对应关系,使用MAC地址来寻址,工作于OSI模型第二层

    4.路由器(Router):是连接两个或多个网络的硬件设备,在网络间起网关的作用,运行在OSI模型第三层,使用IP地址来通信。

    二、OSI网络分层

    1.定义:OSI是Open System Interconnection的缩写,意为开放式系统互联,一共分为七层。该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架

    2.三种网络分层模式

    三、IP地址

    1.定义:给互联网上每一台主机(或路由器)每一个接口分配一个在全世界范围内是唯一的32位标识符号。现在由互联网名字和数字分配机构ICANN进行分配

    2.分类IP:将IP分为若干个固定类,每一类地址都由两个固定长度的字段组成,其中第一个字段位网络号,必须是唯一的。第二个字段为主机号

    3.IP保留地址:

    • 0.0.0.0:它表示的是这样一个集合:所有不清楚的主机和目的网络。这里的“不清楚”是指在本机的路由表里没有特定条目指明如何到达。如果你在网络设置中设置了缺省网关,那么Windows系统会自动产生一个目的地址为0.0.0.0的缺省路由
    • 255.255.255.255:限制广播地址。这个地址指本网段内(同一广播域)的所有主机,这个地址不能被路由器转发。
    • 127.0.0.1:本机地址,主要用于测试。在Windows系统中,这个地址有一个别名“Localhost”。寻址这样一个地址,是不能把它发到网络接口的。除非出错,否则在传输介质上永远不应该出现目的地址为“127.0.0.1”的数据包。
    • 224.0.0.1:组播地址,注意它和广播的区别。从224.0.0.0到239.255.255.255都是这样的地址。224.0.0.1特指所有主机,224.0.0.2特指所有路由器。这样的地址多用于一些特定的程序以及多媒体程序。如果你的主机开启了IRDP (Internet路由发现协议,使用组播功能)功能,那么你的主机路由表中应该有这样一条路由。
    • 169.254.x.x:如果你的主机使用了DHCP功能自动获得一个IP地址,那么当你的DHCP服务器发生故障,或响应时间太长而超出了一个系统规定的时间,Wingdows系统会为你分配这样一个地址。如果你发现你的主机IP地址是一个诸如此类的地址,很不幸,十有八九是你的网络不能正常运行了。
    • 10.x.x.x、172.16.x.x~172.31.x.x、192.168.x.x:私有地址,这些地址被大量用于企业内部网络中。一些宽带路由器,也往往使用192.168.1.1作为缺省地址。私有网络由于不与外部互连,因而可能使用随意的IP地址。保留这样的地址供其使用是为了避免以后接入公网时引起地址混乱

    四、Wireshark

    1.介绍:网络流量抓取分析神器,使用需要学习一些常用的数据包过滤规则

    2.显示所有接口:

    • 虚拟:虚拟网卡
    • 有线:可以连接到有线的网络中,可以发送数据
    • 外部捕获:USB接口

    3.IP过滤:

    • ip.addr==192.168.1.1  只要包中有IP有192.168.1.1的,就会提取出来
    • ip 源地址:ip.src==192.168.1.1
    • ip目标地址:ip.dst==192.168.2.101

    4.端口过滤:

    • tcp.port==80  选取所有的端口是80的tcp包,不管是源端口还是目的端口
    • tcp.dstport==80  找目标端口是80的tcp包
    • tcp.dstport==80  找源端口是80的tcp包
    • udp.port==21  找所有的端口是21的udp包
    • udp.srcport==53  找源端口是53的udp包
    • udp.dstport==53  找目标端口是53的udp包

    5.协议过滤

    • http(底层基于tcp协议)
    • tcp
    • udp
    • icmp
    • arp

    6.HTTP模式过滤

    • http.request.method==”POST”
    • http.request.method==”GET”
    • http.cookie==
    • http.data==
    • http.host==

    7.连接符号:

    • and &
    • or  ||

    五、ARP协议:

    1.定义:全称Address Resolution Protocol,地址解析协议

    • 在OSI模型中ARP协议属于链路层;而在TCP/IP模型中,ARP协议属于网络层

    2.功能:把网络层的IP地址翻译成在数据链路层寻址的48位硬件地址(MAC地址)

    六、TCP/IP协议栈

    七、IP协议

    1.数据包结构

    2.IP数据包首部的固定部分中的字段含义

    • 版本:占4位,值是IP协议的版本,通信双方使用的IP协议版本必须一致
    • 首部长度:占4位,单位是4字节,首部长度默认是20字节,所以填充的数字为0101
    • 区分服务:占8位,用来获得更好的服务,但实际上基本没使用过
    • 总长度:占16位,指首部和数据之和的长度,单位位字节
    • 标识:占16位,当IP数据包长度超过MTU时候,进行分片,在每一个分片数据包使用相同的标识,用来接收方进行数据包重组
    • 标志:占3位,只有前两位有意义
      • 最低位置MF(More Fragment),当MF=1时表示后面还有分片
      • 中间位置DF(Don‘t Fragment),意思是不能分片,当DF=0时才允许分片
    • 片偏移
    • 生存时间:占8位,英文缩写TTL(Time To Live),表示数据包在网络中的寿命。目的是防止数据包无法到达目的地无限制的在互联网兜圈子,大量消耗网络资源。设置一定的初始值,每经过一个路由器减一,TTL=0时,路由器丢弃数据包
      • TTL默认值64,wins和LINUX中TTL值不一样,就可以用来区分系统
    • 协议:占8位,指出数据包使用的是哪种协议
    • 首部校验和:占16位,数据包每经过一个路由器,都要重新计算一下首部校验和,经过一系列运算,判断数据包的首部是否发生变化,如果发生变化就路由器丢弃数据包。
    • 源IP地址:占32位
    • 目的IP地址:占32位

    3.IP分片数据包:

    八、ICMP协议
    1.定义:全称是Internet Control Message Protocol,网际报文控制协议

    2.功能:用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息,大部分网络检修技巧和工具都是基于ICMP的,简单点说,ICMP常用于寻找网络故障

    3.ICMP报文有两种类型:ICMP差错控制报文和ICMP询问报文

    4.ping:基于ICMP协议,报文种类询问报文

    九、传输层

    1.介绍:在网络中进行通信的实体是主机中的进程,网络层为主机之间提供逻辑通信,而传输层为应用进程之间提供端到端的逻辑通信,传输层还要对收到的报文进行差错检测,提供可靠的传输。但是在网络层,IP数据包的检测只针对首部,不检查数据部分

    2.运输层的两个主要协议

    • 传输控制协议TCP(Transmission Control Protocol)
    • 用户数据包协议UDP(User Datagram Protocol)

    3.TCP和UDP的区别

    • TCP提供面向连接的服务。文件分段,在传送数据前必须先建立会话,进行流量控制,保证可靠传输
    • UDP传输之间不需要建立连接,不提供可靠交付,简单点说就是发送出去就不管了。适合一个数据包就能完成通信,或者对丢包了没必要重传的应用。

    十、TCP协议

    1.定义:Transmission Control Protocol,传输控制协议TCP,是为了在不可靠的互联网络上提供可靠的端到端字节流而专门设计的一个传输协议

    2.数据包结构:

    3.TCP数据包首部的固定部分中的字段含义:

    • 源端口和目的端口:各占2字节
    • 序号:占4字节,序号范围是(0,2的32次方-1),序号到达最大之后又回到0
    • 确认号:占4字节,是期望收到对方下一个报文段的第一个数据字节的序号
    • 数据偏移:占4位,单位时4字节,记录TCP报文第多少位开始是数据部分
    • 保留:占6位,目前没有使用
    • 紧急URG:当URG=1时,表明紧急指针有效。告诉系统此报文有紧急数据,应尽快传送,并把数据包插入到本报文段数据的最前面
    • 确认ACK:TCP规定,在连接建立之后所有传送的报文段都必须把ACK设置位1
    • 推送PSH:尽快发送
    • 复位RST:当RST=1时,表明TCP连接出现了严重差错(由于主机崩溃或者其他原因),必须释放连接,重新建立一个连接
    • 同步SYN:用在TCP建立连接时使用
    • 终止FIN:用来释放一个TCP连接
    • 窗口:占2字节,窗口值是(0,2的16次方-1),表明对方现在允许发送的数据量,而且在动态变化
    • 校验和
    • 紧急指针:占2字节,仅在URG=1时有效,指出本报文段的紧急数据的字节数。
    • 选项:长度可变,最长为40字节

    4.TCP的连接建立:三次握手

    • ack确认号,存放在确认号里
    • seq一个随机产生的序列号,存放再序号里

    5.TCP的连接释放:四次挥手

    十一、TCP封包详细信息

    1.数据帧Frame 1中的字段含义:

    字段 含义

    Encapsulation type

    封装类型

    Arrival Time

    捕获时间

    Epoch Time

    时间戳

    Frame Number

    帧序列号

    Frame Length

    帧长度

    Capture Length

    捕获长度

    2.以太网帧Ethernet II头部信息中的字段含义:

    字段 含义

    Destination

    目标MAC地址

    Source

    MAC地址

    Type

    IP类型

    3.网络层Internet Protocol Version 4(IPv4或IPv6)头部信息中的字段含义:

    字段 含义

    0100 .... = Version

    版本

    .... 0101 = Header Length

    IP头部长度

    Differentiated Services Field

    差分(区分)服务字段

    Total Length

    IP数据包的总长度

    Identification

    标识位:用来分组,给分片的数据包标记用的

    Flags

    标志位:用来确定后续是否有切片以及决定是否分片

    Time to live

    生存时间TTL

    Protocol

    上层协议:TCP

    Header checksum

    头部校验和

    Source

    IP

    Destination

    目标IP

    4.Transmission Control Protocol传输层头部信息中的字段含义:

    字段 含义

    Source Port

    源端口

    Destination Port

    目标端口

    Sequence number

    序列号

    Acknowledgment number

    确认号

    1000 .... = Header Length

    头部长度

    Flags

    标志位

    Window size value

    窗口大小

    Checksum

    校验和

    Urgent pointer

    紧急数据指针

    十二、数据传输过程

    十三、数据封装过程

    • 数据段在传输层传输;数据包在网络层传输;数据帧在数据链路层传输

    十四、UDP协议:全称User Datagram Protocol,用户数据包协议

    十五、端口

    分类:

    • 系统端口号:0~1023端口,IANA把这些端口指派给TCP/IP最重要的一些应用程序
    • 登记端口号:1024~49151,这类端口需要在IANA按照规定手续办理登记
    • 客户端端口号:49152~65535,客户进程运行时候动态使用,当进程通信结束,系统收回端口

  • 相关阅读:
    SmartDb代码修改
    windows下Nginx+RTMP部署
    嵌入式linux下获取flash分区大小
    (转)Qt添加windows开机自启动
    (转)交叉编译lrzsz
    关于海思SDK在Ubuntu下安装错误问题
    电总协议串口调试助手
    使用git将本地仓库上传到远程仓库(转)
    c++中包含string成员的结构体拷贝导致的double free问题
    59. 可变参数
  • 原文地址:https://www.cnblogs.com/yankaohaitaiwei/p/11688136.html
Copyright © 2011-2022 走看看