关键词:
一 网络通信
网络存在的意义就是跨地域数据传输=》称之为通信
网络=物理链接介质+互联网通信协议
CS架构与BS架构
CS架构
Client<===========>Server
客户端软件send 服务端软件recv
操作系统 操作系统
计算机硬件<====物理介质=====>计算机硬件
BS架构
Browser<===========>Server
二 OSI 七层协议
互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层
五层协议
应用层
传输层
网络层
数据链路层
物理层
协议:规定数据的组织格式
格式:头部+数据部分
封包裹的过程:数据外加头
拆包裹的过程:拆掉头获取数据
OSI七层协议数据传输的封包与解包过程
三 五层协议
计算机1: 计算机2:
应用层 应用层
传输层 传输层
网络层 网络层
数据链路层 数据链路层
物理层 <===========交互机===========> 物理层
0101010101010
(源mac地址,目标mac地址)(源ip地址,目标ip地址)数据
3.1 物理层负责发送电信号
一组物理层数据称之为:位
单纯的电信号毫无意义,必须对其进行分组
3.2 数据链路层:ethernet以太网协议
规定1:一组数据称之为一个数据帧
规定2:数据帧分成两部分=》头+数据
头包含:源地址与目标地址,该地址是mac地址
数据包含:包含的是网络层发过来的整体的内容
规定3:规定但凡接入互联网的主机必须有一块网卡,每块网卡在出厂时都烧制好一个全世界独一无二的地址,该地址称之为mac地址
注意:计算机通信基本靠吼,即以太网协议的工作方式是广播
(源MAC地址,目标MAC地址,类型)(数据内容)(FCS)
其中类型确定网络层中使用什么协议,FCS用于差错校验
3.3 网络层:IP协议
3.3.1 划分广播域
每一个广播域但凡要接通外部,一定要有一个网关帮内部的计算机转发包到公网
网关与外界通信走的是路由协议 (RIP、OSPF内部网关协议 BGP外部网关协议)
3.3.2 IP数据包
规定1:一组数据称之为一个数据包
规定2:数据帧分成两部分=》头+数据
头包含:源地址与目标地址,该地址是IP地址
数据包含的:传输层发过来的整体的内容
3.3.3 子网划分
ipv4地址:
8bit.8bit.8bit.8bit
0.0.0.0
255.255.255.255
子网掩码:
8bit.8bit.8bit.8bit
255.255.255.0对应的二进制表达
11111111.11111111.11111111.00000000
一个合法的ipv4地址组成部分=ip地址/子网掩码地址
172.16.10.1/255.255.255.0
172.16.10.1/24
计算机1: 172.16.10.1: 10101100.00010000.00001010.000000001 255255.255.255.0: 11111111.11111111.11111111.000000000 172.16.10.0: 10101100.00010000.00001010.000000000 计算机2: 172.16.10.2: 10101100.00010000.00001010.000000010 255.255.255.255.0: 11111111.11111111.11111111.000000000 172.16.10.0: 10101100.00010000.00001010.000000000
计算机1: 计算机2:
应用层 应用层
传输层 传输层
网络层 网络层
数据链路层 数据链路层
物理层 <=========二层交互机========> 物理层
0101010101010
(源mac地址,xxxx)(源ip地址,目标ip地址)数据
(源mac地址,网关的mac地址)(172.16.10.10/24,101.100.200.11/10)数据
事先知道的是对方的ip地址
但是计算机的底层通信是基于ethernet以太网协议的mac地址通信
ARP:
若目标IP地址与源IP地址在同一网段,则直接广播问目标IP地址的MAC地址。仅第一次需要解析,后多存于缓存。
若不在同一网段,则向网关发送,由网关向外转发。
rust编程语言一(代码片段)
Rust编程语言一usestd::env;fnmain()println!("HelloWorld!\\nI'maRustacean!");println!("days",3);println!("0,thisis1.1,thisis0","Alice","Bob");println!("subjectverbobject",object="thelazydog",subject="thequickbrownfox",ver... 查看详情
并发编程(代码片段)
...zed修饰类中的静态方法,与非静态方法。话不多说直接上代码1234567891011121314151617181920212223242526272829303132333435363738394041publicclassMultiThreadprivatestaticintnum=0;publicsynchronizedvoidprintNum(Stringtag)tryif(tag.equals("a"))num=100;System.out.println("... 查看详情
网络编程day1(代码片段)
字节序判断:#include<stdio.h>uniontestcharch;//0x78intnum;//0x12345678;intmain(intargc,charconst*argv[])uniontestt;t.num=0x12345678;if(0x78==t.ch)printf("smallendian.\\n");elseprintf("bigendian.\\n");return0; 查看详情
计算机网络基础(代码片段)
目录认识"协议"计算机网络层状结构操作系统和协议分层网络传输(TCP/IP通信过程)同一网段内的主机可以直接通信,不需要路由器。跨网段通信数据报的封装和分用网络中的地址管理认识"协议"""协议"是一... 查看详情
vscode自定义代码片段9——js中的面向对象编程(代码片段)
JavaScript的面向对象编程 //JS'OOP //9如何自定义用户代码片段:VSCode=》左下角设置=》用户代码片段=》新建全局代码片段文件...=》自定义片段名称=》编辑用户片段=》ctrl+S保存 //JS中的面向对象编程 "P... 查看详情
ifix上位机网络测试画面(代码片段)
IFIX上位机添加IP测试效果 实现画面实现脚本OptionExplicitPrivateDeclareFunctionGetExitCodeProcessLib"kernel32"(_ByValhProcessAsLong,_lpExitCodeAsLong)AsLongPrivateDeclareFunctionCloseHandleLib"kernel32" 查看详情
rust编程语言二(代码片段)
Rust编程语言二fnmain()letnumber=3;//if条件语句ifnumber%4==0println!("numberisdivisibleby4");elseifnumber%3==0println!("numberisdivisibleby3");elseifnumber%2==0println!("numberisdivisibleby2");elseprintln!("numberisnotdivisibleby4,3,or2... 查看详情
ifix上位机网络测试画面(代码片段)
IFIX上位机添加IP测试效果 实现画面实现脚本OptionExplicitPrivateDeclareFunctionGetExitCodeProcessLib"kernel32"(_ByValhProcessAsLong,_lpExitCodeAsLong)AsLongPrivateDeclareFunctionCloseHandleLib"kernel32"(_ByValhObjectAsLong)AsLongPrivateDeclareFunctionOpenProcessLib&... 查看详情
网络协议趣谈什么是网络协议(代码片段)
下面是一段经典的HelloWorld!代码publicclassHelloWorldpublicstaticvoidmain(String[]args)System.out.println("HelloWorld!");这是每一个程序员向计算机世界说"你好,世界"的方式。但是,这段文字也是一种协议,是人类和计算机... 查看详情
shell编程-11-操作mysql(代码片段)
文章目录一、基本使用二、查询三、隐藏用户名和密码一、基本使用shell操作MySQL是通过给mysql这个客户端程序传递相应的参数实现的mysql-u用户-p'password'db_name-e"sql语句"#!/bin/bashHOSTNAME="localhost"#数据库信息PORT... 查看详情
字符串编程(代码片段)
java字符串编程题Java代码import java.util.HashMap; import java.util.Map; public class CountCharNum /** * JAVA编程题:字符串"yekmaakkccekymbvb",求出字符串中有多少种字符,以及每个字符的个数? * */ public static void main(String[... 查看详情
androidstudio插件开发2网络请求创建dialogtrello获取cardid等(代码片段)
网络请求点击这里就出来一个弹框 更新Actions关注这个<actions><actionid="TrelloAction"class="com.anguomob.anguo.actions.trello.TrelloAction"text="TrelloAction"description="Moveatrellocardfromtodotothenextlist"/><groupi... 查看详情
android权威编程指南笔记2018-09-01(代码片段)
1.androidButton上面的英文字符串自动大写的问题解决<Buttonandroid:id="@+id/true_button"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text 查看详情
阿里云在线编程34.矩阵最小路径和(代码片段)
原文地址:https://copyfuture.com/blogs-details/20200227204619876tekz555paz1j0iq【阿里云在线编程】34.矩阵最小路径和题目名称矩阵最小路径和题目地址https://developer.aliyun.com/coding/34题目描述概述:给定一个矩阵,大小为m,从左... 查看详情
bom编程(代码片段)
open和close<!DOCTYPEhtml><html><head><metacharset="utf-8"><title>BOM编程-open和close</title></head><body><scripttype="text/javascript 查看详情
html5和css3二接口(代码片段)
代码下载地址网络状态改变事件<script>/*online:网络联通时触发*/window.addEventListener("online",function()alert("网络联通了"););/*offline:网络断开时触发*/window.addEventListener("offline",function()alert("网络断开了&... 查看详情
python多线程编程join(代码片段)
一.背景直接从一个例子来说吧.importtimeimportthreadingdeffun():foriinrange(5):time.sleep(1)print("helloword")defmain():thread_1=threading.Thread(target=fun,name="thread_1")thread_1.start 查看详情
flutter中http进行网络请求(代码片段)
一.flutter网络请求的三种方式1.HttpClient请求实现步骤:1).导入包import'dart:convert';import'dart:io';2).创建HttpClientvarhttpClient=HttpClient();3).Http连接,并获取解析urlvarrequest=awaithttpClient.getUrl(Uri.parse(url)); 这里可以... 查看详情