【Network】网络基础扫盲
网络基础扫盲
正文开始@小边小边不秃头
hi~ 宝子们,好久好久不见,从今往后,我的文章会较为随意(因为我懒得维持文章严谨的逻辑了,写文章只不过已经变成了习惯,也就是说我只是抱着“学习”的态度来更新,毕竟 —— “进大厂”已不再是我的追求了(是时候放弃幻想面对现实了
1. 协议分层
网络协议栈层状结构贯穿操作系统,其中tcp/ip属于OS的一部分 ——
认识协议:
所谓的计算机协议,本质其实就是约定,约定是由编码的程序员自己根据标准文档或者自己的喜好定义协议。
因为计算机生产厂商有很多,计算机操作系统有很多,计算机网络硬件设备有很多,如何让这些不同厂商之间生产的计算机能够相互顺畅的通信? 就需要有人站出来,约定一个共同的标准。大家都来遵守,这就是网络协议。
协议为什么要分层?
软件设计上层状结构的好处 —— 解耦
OSI的七层模型
OSI (Open System Interconnection)七层网络模型称为开放式系统互联参考模型,是一个逻辑上的定义和规范(硬件不实现,通过软件层实现)
把网络从逻辑上分为了7层,每一层都有相关、相对应的物理设备,比如路由器,交换机
OSI 七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输
它的最大优点是将服务、接口和协议这三个概念明确地区分开来,概念清楚,理论也比较完整. 通过七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯
但是,它既复杂又不实用,所以我们按照TCP/IP四层模型来认识。
2. TCP/IP五层(或四层)模型
- 应用层:负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等,我们的网络编程主要就是针对应用层。有这样一个误区,认为数据传输给对面,事情就完了。事实上,还要分析并使用数据,这是应用层要干的事儿。
- 传输层:负责两台主机之间的数据传输。如传输控制协议 (TCP),能够确保数据可靠的从源主机发送到目标主机.
- 网络层:负责地址管理和路由选择。例如在IP协议中,通过IP地址来标识一台主机,并通过路由表的方式规划出两台主机之间的数据传输的线路(路由)。路由器(Router)工作在网路层。
- 数据链路层:负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。有以太网、令牌环网、无线LAN等标准。交换机(Switch)工作在数据链路层。
- 物理层:负责光/电信号的传递方式。比如现在以太网通用的网线(双绞线)、早期以太网采用的的同轴电缆 (现在主要用于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。
物理层我们考虑的比较少,因此很多时候也可以称为 TCP/IP四层模型。
⬇️ 一般而言 ——
对于一台主机,它的操作系统内核实现了从传输层到物理层的内容;
对于一台路由器,它实现了从网络层到物理层;
对于一台交换机,它实现了从数据链路层到物理层;
对于集线器,它只实现了物理层
但是并不绝对,很多交换机也实现了网络层的转发;很多路由器也实现了部分传输层的内容(比如端口转发)
3. 网络传输流程
3.1 局域网通信
理解封装和解包&分用:
如何理解报头,what & why?
报头中的数据,用来指导当前层进行某种协议决策。报头是一种结构化的数据。Linux OS是C语言写的,在语言角度 ——
//自己随意定义的一个报头,只是示意
struct my_hdr
{unsigned int src:16; //位段unsigned int dst:16;unsigned int type:8;unsigned int len:24;
};
// 定义了一个位段变量→定义了一个报头
struct my_hdr my;
my.src = 0x1;
my.dst = 0x2;
my.type = 0x3;
my.len = 0x16;
几乎每一层协议的报文[ 报头+有效载荷 ],都要包含两种字段 ——
- 当前报文的有效载荷要交付给上层的哪个协议 - 分用
- 几乎每个报头,都要明确报头和有效载荷的边界 - 解包
以上是协议的共性。
局域网中的两台主机能直接通信吗?可以哦
这就像在一个教室里上课。网络资源由大家共享,如果同时发送,可能发生数据碰撞的问题。每台主机都有碰撞检测的能力,也都有碰撞避免算法。这是在数据链路层做的。局域网中任何一个时刻,都只能有一台主机在向局域网中发送消息 - 互斥
如果我想攻击这个局域网,我应该怎样做?占用临界资源,造成其它主机饥饿。
3.2 跨网络通信
理解IP的意义?
- 从哪里来,到哪里去 (几乎一直不变) —— IP
- 上一站从哪里来,下一站去哪里 (一直在变化) —— Mac
所有的变化都围绕这这一个不变展开,这也是一个人生问题,我们顺其自然就好了,宝宝们。
由于路由器的存在,在IP层向上的所有协议,看不到底层网络的任何差异。由于IP的存在,把不同的网络进行大一统。
认识IP地址
IP地址是在IP协议中, 用来标识网络中不同主机的地址;
对于IPv4来说, IP地址是一个4字节, 32位的整数; 对于IPv6, 有16字节, 128位
我们通常也使用 “点分十进制” 的字符串表示IP地址, 例如 192.168.0.1 ; 用点分割的每一个数字表示一个字节, 范围是 0 - 255;
认识Mac地址
MAC地址用来识别数据链路层中相连的节点;
长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址).
【Network】网络基础扫盲相关推荐
- 网络基础扫盲 | 数据传输方式和交换方式
- Lwip从入门到放弃之(一)---基础网络知识扫盲
Lwip从入门到放弃之-基础网络知识扫盲(一) 由于工作中用到了有关Lwip的有关知识,本人作为一个网络通信协议的门外汉,打算系统的学习一下以太网通讯的有关知识.而Lwip作为一款开源的轻量级TCP/ ...
- 02-Linux 网络基础(Network Namespase、veth pair、bridge、Iptables)
Linux 网络基础 Network Namespase 简单认识 Linux的namespace(名字空间)的作用就是"隔离内核资源".在Linux的世界里,文件系统挂载点.主机 ...
- 网络分析概述之网络基础简介
网络分析概述之网络基础简介 本文转载自小白名的生统笔记,原文链接:https://mp.weixin.qq.com/s/Bp-u663WUhFxPfeP7pBh0w 从本节开始介绍网络分析.本篇暂且对 ...
- HTTP精简教程一:Web网络基础
使用 HTTP 协议访问 Web Web浏览器根据地址栏中制定的 URL 从 Web 服务器获取文件资源(resource)等信息,从而显示出Web页面. 超文本传输协议(HTTP,HyperText ...
- CCNA系列课程(1) 网络基础
第一节课<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 杜飞 ...
- 【前端词典】进阶必备的网络基础(下)
前言 在上一篇我提到了前端面试频率较高的几个网络基础知识,这一篇我会把上一篇遗留的五个尽力讲清楚.如果还没有来得及看上一篇,那么现在可以一起看. 目录 接下来我会讲以下内容: 五类 IP 地址 跨域的 ...
- 《图解HTTP》读书笔记--第1章 了解Web及网络基础
写在前面:本文仅供个人学习使用,如有侵权,请联系删除.文章中所用图片绝大多数来源于<图解HTTP>,请读者支持原版. 文章目录 第1章 了解Web及网络基础 1.1 使用HTTP协议访问W ...
- Docker 网络基础原理
网络基础 网络分层模型 公有IP和私有IP Public IP:互联网上的唯一标识,可以访问internet Private IP:不可在互联网上使用,仅供机构内部使用 A类10.0.0.0--10. ...
最新文章
- GCC编译选项--创建与使用库
- HTML的标签描述24
- PXE实现Linux的自动安装
- 三角形的几何公式大全_数学老师精心整理:小学四年级公式大全,各个知识点逢考必有...
- HDOJ 1398 Square Coins
- scanf和gets的差别
- SAP 电商云 Spartacus UI Component 级别的延迟加载实现(Lazy Load)
- 【编译原理】CFG分析树
- neo4j 迁移_在Kubernetes中迁移Neo4j图模式
- 分词相关技术(转载)
- java 布尔逻辑运算符_Java运算符
- 摩托车午夜飙车撞进公交车下 肇事车主当场死亡
- 在指定路径或者是文件名查找指定的字符串
- 黑龙江2021年高考成绩查询分数,2021年黑龙江高考成绩什么时候公布
- 数据结构之二叉树实现排序功能
- MATLAB的7种滤波方法(重制版)
- JDK中提供的类(常用API)
- 如何在远程桌面连接的服务器上访问本地磁盘
- 如何彻底删除或卸载迈克菲软件
- java碳纤维折叠车评测_开启轻奢生活 SAVA Z1碳纤维折叠车 评测