【网络】总览(待更新)

网络Ⅰ

  • 零、概述
    • 0. 网络协议
    • 1. 网络协议分层
      • OSI 七层模型
      • TCP/IP 五层模型
    • 2. 协议报头
    • 3. 通信过程
  • 一、应用层
    • 1.1 HTTP 协议
    • 1.2 HTTPS 协议
  • 二、传输层
    • 2.1 端口号
    • 2.2 netstat - - 查询网络状态
    • 2.3 pidof - - 查看服务器的进程 id
    • 2.4 UDP 协议
    • 2.5 TCP 协议
  • 三、网络层


查询计算机 ip 地址命令:iifconfig

inet:IP地址
ether:以太网(16  进制)

零、概述

0. 网络协议

协议是一种“约定”。

现有的这些许多不同厂商之间生产的计算机能够相互顺畅的通信,正是因为他们共同接受并遵守着同一套由权威定制的标准。这就是 网络协议。

1. 网络协议分层

OSI 七层模型

OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范。

应用程序中:

  • 应用层
  • 表示层
  • 会话层

操作系统中:

  • 传输层
  • 网络层

设备驱动程序与网络接口中:

  • 数据链路层
  • 物理层

TCP/IP 五层模型

OSI 七层模型的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整。但是, 它既复杂又不实用,所以我们按照 TCP/IP 五层模型来讲解

  • 应用层: 负责 应用程序间沟通
    如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等。我们的网络编程主要就是针对应用层。

  • 传输层: 负责 两台主机之间的数据传输
    如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机

  • 网络层: 负责 地址管理和路由选择
    例如在 IP 协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)工作在网路层。

  • 数据链路层: 负责 设备之间的 数据帧 的传送和识别
    例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网,无线 LAN 等标准。交换机(Switch)工作在数据链路层。

  • 物理层: 负责 光 / 电信号的传递方式
    比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的 wifi 无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层。

网络协议的五层模型的位置关系
【网络】总览(待更新)_第1张图片

2. 协议报头

用户使用网络互相交互时,从应用层开始,每层向下传输时都会加上本层协议的报头。传到局域网或以太网后,再由底向上进行解析,后将属于本层的报头解开,剩余的数据传给上层。

  • 每一层,都会把上层交付给自己的数据,作为自己的 有效载荷

  • 每一层,都有自己的协议报头

  • 对应的层,报头+有效载荷 = 自己要发送的报文(这就是 封装

  • 在逻辑上,网络协议,都认为自己在和对方同层协议在通信

  • 同层协议都能互相认识对方的报头,即都能做到:

    • a. 将报头进行有效载荷进行分离
    • b. 将有效载荷交付给上层的那一个具体协议

3. 通信过程

两个主机通信的本质,是两个主机的 OS 与网络协议栈在通信。

任何人要通信,需要有唯一的一个标识符。对于机器也是如此,对于计算机,每台计算机都配有网卡,网卡在出厂的时候,就在网卡内部写入了网卡的 sn 号,MAC 地址, 全球唯一。

路由器 是连接两个子网下通信的桥梁,实际上也是一个 主机,或者叫 节点。其有三层结构:

  • 网络层
  • 链路层
  • 物理层(此处不做讨论)

【网络】总览(待更新)_第2张图片

网络层的报头:为报文定制最终目标,路上根据该地址进行路径选择(IP 地址)

链路层的报头:根据路径选择的结果,来选择下一跳主机(MAC 地址)。

IP 协议及其以上的协议于任何网络方面是没有差异的,即 IP 地址屏蔽了底层子网机制的差异。

IP协议向下,网络可以具有明显的差异。

数据的封装和分用:

  • 不同的协议层对数据包有不同的称谓,在传输层叫做段(segment),在网络层叫做数据报 (datagram),在链路层叫做帧(frame)。

  • 应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为 封装 (Encapsulation)。首部信息中包含了一些类似于首部有多长,载荷(payload)有多长,上层协议是什么等信息。

  • 数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中的“上层协议字段“将数据交给对应的上层协议处理,称为 分用


一、应用层

一端发送时构造的数据,在另一端能够正确的进行解析,这种约定,就是 应用层协议

程序员自然可以自行定制协议,但有如下非常好的协议设计是可以直接拿来使用的。

1.1 HTTP 协议

HTTP 协议介绍

1.2 HTTPS 协议

HTTPS 协议介绍


二、传输层

传输层用作提供传输策略,负责数据能够从发送端传输至接收端。

2.1 端口号

端口号(Port)标识了一个主机上进行通信的不同的应用程序。

通过 源 IP 地址、目标 IP 地址、协议号、源端口号、目标端口号 这五个数字可以识别一个通信。

端口号范围划分:

  • 0 - 1023:知名端口号。
    HTTP、FTP、SSH 等这些广为使用的应用层协议,他们的端口号都是固定的。

    ssh 服务器,使用 22 端口
    ftp 服务器,使用 21 端口
    telnet 服务器,使用 23 端口
    http 服务器,使用 80 端口
    https 服务器,使用 443 端口
    
  • 1024 - 65535:操作系统动态分配的端口号。
    客户端程序的端口号,就是由操作系统从这个范围分配的。

    其中也不乏有数据库或一些特殊的服务在其中,比如:
    mysql,使用 3306 端口
    

2.2 netstat - - 查询网络状态

netstat -naup:

-n:拒绝显示别名,能显示数字的全部转化成数字
-a:(all)显示所有选项
-u:(udp)仅显示 udp 相关选项
-p:显示建立相关链接的程序名

netstat -nltp:

-n:拒绝显示别名,能显示数字的全部转化成数字
-l:仅列出有在 Listen (监听) 的服务状态
-t:(tcp)仅显示tcp相关选项
-p:显示建立相关链接的程序名

2.3 pidof - - 查看服务器的进程 id

pidof [进程名]:通过进程名查看进程 id

2.4 UDP 协议

UDP 协议介绍

2.5 TCP 协议

TCP 协议介绍

TCP 和 UDP 的对比:
TCP 和 UDP 之间的优点和缺点,不能简单,绝对的进行比较。

  • TCP 用于可靠传输的情况,应用于文件传输,重要状态更新等场景。

  • UDP 用于对高速传输和实时性要求较高的通信领域,

    例如,早期的 QQ,视频传输...等,另外 UDP 可以用于广播。
    

归根结底,TCP 和 UDP 都是程序员的工具,什么时机用,具体怎么用,还是要根据具体的需求场景去判定。


三、网络层

你可能感兴趣的:(网络,linux,网络,arm开发)