34-网络编程(代码片段)

zhubincheng zhubincheng     2023-04-02     684

关键词:

一 网络通信

网络存在的意义就是跨地域数据传输=》称之为通信
网络=物理链接介质+互联网通信协议

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)); 这里可以... 查看详情