《趣谈网络协议》学习笔记
第一讲 为什么要学网络协议
协议三要素
- 语法,就是这一段内容要符合一定的规则和格式。例如,括号要成对,结束要使用分号等。
- 语义,就是这一段内容要代表某种意义。例如数字减去数字是有意义的,数字减去文本一般来说就没有意义。
- 顺序,就是先干啥,后干啥。
常用的协议
- 应用层(数据封装格式)
- DHCP
- HTTP
- HTTPS
- RTMP
- P2P
- DNS
- GTP
- RPC
- 传输层 (会话连接机制、端口号)
- UDP
- TCP
- 网络层
- ICMP
- IP
- OSPF
- BGP
- IPSec
- GRE
- 链路层
- ARP
- VLAN
- STP
- 物理层
- 网络跳线
浏览器输入网址后发生了什么事情
- 浏览器输入 www.kaola.com
- 查找目标IPd地址
- 一般通过DNS协议查找,或者HTTPDNS查
- 结果得到目标ip地址:106.114.138.24
- 打包请求
- 此处用了https协议, 无论使用什么协议都会有正文部分
- 应用层:在http头:请求方式,url地址,协议版本号,正文格式,正文长度
- 传输层:tcp头:浏览器端口号,电商服务器端口号
- 网络层:ip头:客户端IP,电商服务器ip
- 链路层:MAC头:客户端的mac地址,电商服务器的mac
第二讲 网络分层的真实含义是什么
问题:二层设备、三层设备、四层LB、七层LB是什么?
二层设备的处理是mac层的东西,就是只把MAC头摘下来,看看到底是丢弃、转发、还是自己留着 三层设备就是把MAC头摘下来之后,再把IP头摘下来,看看到底是丢弃、转发、还是自己留着
只要是在网络上跑的包,都是完整的。可以有下层没上层,绝对不可能有上层没下层。
第三讲 ifconfig:最熟悉又陌生的命令行
windows:ipconfig
linux:ifconfig、 ip addr
root@test:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ffinet 10.100.122.2/24 brd 10.100.122.255 scope global eth0valid_lft forever preferred_lft foreverinet6 fe80::f816:3eff:fec7:7975/64 scope link valid_lft forever preferred_lft forever
复制代码
IP地址是一个网卡在网络世界的通讯地址,相当于我们现实世界的门牌号码。
以上内容,IP地址为:10.100.122.2。
32的IP地址被分成了5类,A、B、C类主要分两部分,前面一部分是网络号,后面一部分是主机号。
无类型域间选路(CIDR)
把IP地址一分为二,前面的是网络号,后面的是主机号。
10.100.122.2/24,前面24位是网络号,后面8位是主机号
广播地址 10.100.122.255
子网掩码 255.255.255.0
网络号 将子网掩码和IP地址按位计算AND,就可以得到网络号:10.100.122.0
公有IP地址和私有IP地址
装换公式
ip=>机器号、网络号 先看CIDR,如果是8的整数倍,则不需要转换成2进制,前部分为机器号,后部分为网络号;如果不是8的整数倍,则需要把分界十进制转换成2进制,同样,前部分为机器号,后部分为网络号 ip=>第一个地址 前部分+ 1(二进制) ip=>子网掩码 前部分(1)+ 后部分(0)如:255.255.<111111><00>.00 => 255.255.252.0 ip=>广播地址
算一个IP地址的求一下这个网络的第一个地址、子网掩码和广播地址
16.158.165.91/22
- /22 不是8的倍数,要转换成2进制
- 16.158.165.91 =》 16.158.<101001><00>.91,则网络号为16.158.<101001>,机器号是<00>.91
- 第一个地址16.158.<101001><00>.1,即16.158.164.1
- 子网掩码是255.255.<111111><00>.0,即255.255.252.0,
- 广播地址16.158.<101001><11>.255,即16.158.167.255
MAC 地址
link/ether fa:16:3e:c7:79:75 brd ff:ff:ff:ff:ff:ff
是一个网卡的物理地址,用十六进制,6个byte表示 MAC地址更像是身份证,是一个唯一的标识
网络设备的状态标识
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
叫做net_device flags,网络设备的状态标识
- UP标识网卡处于启动状态
- BROADCAST标识这个网卡有广播地址,可以发送广播包
- MULTICAST 标识可以发送多播包
- LOWER_UP 标识 启动,即网线是插着的
- mtu 1500 最大传输单元MTU(MAC层)为1500,这是以太网的默认值
- qdisc pfifo_fast qdisc全称queueing discipline中文叫排队规则。
总结
- IP是地址,有定位功能;MAC是身份证,无定位功能
- CIDR可以用来判断是不是本地人
- IP分公有IP和私有IP
《趣谈网络协议》学习笔记相关推荐
- 第二行代码学习笔记——第六章:数据储存全方案——详解持久化技术
本章要点 任何一个应用程序,总是不停的和数据打交道. 瞬时数据:指储存在内存当中,有可能因为程序关闭或其他原因导致内存被回收而丢失的数据. 数据持久化技术,为了解决关键性数据的丢失. 6.1 持久化技 ...
- 第一行代码学习笔记第二章——探究活动
知识点目录 2.1 活动是什么 2.2 活动的基本用法 2.2.1 手动创建活动 2.2.2 创建和加载布局 2.2.3 在AndroidManifest文件中注册 2.2.4 在活动中使用Toast ...
- 第一行代码学习笔记第八章——运用手机多媒体
知识点目录 8.1 将程序运行到手机上 8.2 使用通知 * 8.2.1 通知的基本使用 * 8.2.2 通知的进阶技巧 * 8.2.3 通知的高级功能 8.3 调用摄像头和相册 * 8.3.1 调用 ...
- 第一行代码学习笔记第六章——详解持久化技术
知识点目录 6.1 持久化技术简介 6.2 文件存储 * 6.2.1 将数据存储到文件中 * 6.2.2 从文件中读取数据 6.3 SharedPreferences存储 * 6.3.1 将数据存储到 ...
- 第一行代码学习笔记第三章——UI开发的点点滴滴
知识点目录 3.1 如何编写程序界面 3.2 常用控件的使用方法 * 3.2.1 TextView * 3.2.2 Button * 3.2.3 EditText * 3.2.4 ImageView ...
- 第一行代码学习笔记第十章——探究服务
知识点目录 10.1 服务是什么 10.2 Android多线程编程 * 10.2.1 线程的基本用法 * 10.2.2 在子线程中更新UI * 10.2.3 解析异步消息处理机制 * 10.2.4 ...
- 第一行代码学习笔记第七章——探究内容提供器
知识点目录 7.1 内容提供器简介 7.2 运行权限 * 7.2.1 Android权限机制详解 * 7.2.2 在程序运行时申请权限 7.3 访问其他程序中的数据 * 7.3.1 ContentRe ...
- 第一行代码学习笔记第五章——详解广播机制
知识点目录 5.1 广播机制 5.2 接收系统广播 * 5.2.1 动态注册监听网络变化 * 5.2.2 静态注册实现开机广播 5.3 发送自定义广播 * 5.3.1 发送标准广播 * 5.3.2 发 ...
- 第一行代码学习笔记第九章——使用网络技术
知识点目录 9.1 WebView的用法 9.2 使用HTTP协议访问网络 * 9.2.1 使用HttpURLConnection * 9.2.2 使用OkHttp 9.3 解析XML格式数据 * 9 ...
- 安卓教程----第一行代码学习笔记
安卓概述 系统架构 Linux内核层,还包括各种底层驱动,如相机驱动.电源驱动等 系统运行库层,包含一些c/c++的库,如浏览器内核webkit.SQLlite.3D绘图openGL.用于java运行 ...
最新文章
- MYSQL5-7版本sql_mode=only_full_group_by问题
- XOOM MZ606 刷机
- 返回语句C语言return关键字
- [深度学习基础] 5. 实现细节
- Android 推送通知指南(转载)
- 【QT】QT从零入门教程(十六):QSS样式表
- 关于一直卡死的两段代码,望对LDD3有兴趣者戳开这个blog : )
- Linux的文件的权限管理
- Ubuntu安装google中文输入法
- python0309
- JAVASE基础模块十五(StringBuffer类)
- Transformer面试 GavinNLP Transformer101之41-50
- 避雷秘籍:iOS过审的基础条件
- mysql删除表的命令
- FX5UPLC的各种以太网通讯,SOCKET 2台PLC简单通讯 走网线
- 【English】《控方证人》
- 全局异常处理-dao-service-controller-gateway网关工程-集中处理token-登陆模块-获取用户信息-ThreadLocal-组件-项目环境推荐-swagger-knif转发
- oracle 中的rollback,oracle中rollback的使用
- SSMS(Microsoft SQL Server Management Studio 18)
- 操作系统实验之处理机调度
热门文章
- 单片机c语言视频教程bd,单片机C语言教程五
- mysql怎么生成sql文件_sql如何生成sql文件
- C语言课程设计:学生管理系统
- 安装matlab7.0步骤,Matlab 7.0 安装指导
- win10搭建无盘服务器配置,关于今天搞定网吧无盘Win10x64一包多配置到底的详细讲解 By 原来我不帅...
- Linux chmod 命令 设置权限
- python open函数关于w+ r+ 读写操作的理解
- 数据库操作系统——Visual FoxPro 6.0安装步骤
- Node.js安装教程
- node.js安装详细教程