网络编程基础

Posted leiting7

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络编程基础相关的知识,希望对你有一定的参考价值。

一、软件开发的架构

我们了解的涉及到两个程序之间通讯的应用大致可以分为两种:

第一种是应用类:qq、微信、网盘、优酷这一类是属于需要安装的桌面应用

第二种是web类:比如百度、知乎、博客园等使用浏览器访问就可以直接使用的应用

这些应用的本质其实都是两个程序之间的通讯。而这两个分类又对应了两个软件开发的架构~

1.C/S架构

C/S即:Client与Server,中文意思:客户端与服务端架构,这种架构也是从用户层面(也可以是物理层面)来划分的

这里的客户端一般泛指客户端应用程序EXE,程序需要先安装后,才能运行在用户的电脑上,对用户的电脑操作系统环境依赖较大。

优点:软件的使用稳定

? 节省网络资源

缺点:安装麻烦,用户体验差

? 软件的每一次更新,用户都需要重新下载或更新版本

技术图片

2.B/S架构

B/S即:Browser与Server,中文意思:浏览器端与服务器端架构,这种架构是从用户层面来划分的。

Browser浏览器,其实也是一种Client客户端,只是这个客户端不需要大家去安装什么应用程序,只需在浏览器上通过HTTP请求服务器端相关的资源(网页资源)

优点:软件的使用方便

? 无需跟着软件更新去下载

缺点:如果网络不稳定,软件的使用就不稳定

趋势:B/S架构流行,用户体验高

技术图片

二、网络概念

问题:网络到底是什么?计算机之间是如何通信的?

语言是人与人之间沟通的介质!

协议是计算机与计算机之间沟通介质!

如何远程通信

物理连接介质

  • 电话--—电话线
  • 纯屏电脑-–-–网线
  • 笔记本电脑-–-–网线,网卡

电脑与电脑通信:互联网协议

三、互联网协议(OSI七层协议)

互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层
技术图片

技术图片

技术图片

此时需要关注的是5层: 由下到上记

        - 应用层
        - 传输层
        - 网络层
        - 数据链路层
        - 物理层

物理层

获取计算机的电信号数据(100101001)

问题:无法获取具体数据内容,将电信号数据扔给数据链路层

数据链路层

我们要知道数据是什么?
我们要知道数据是给谁的?

以太网协议:
获取电信号真实数据
head:-18个字节
      -6:发送者
      -6:接受者
      -6:数据类型
data:电信号具体的类型

每台电脑必须要有一个网卡(电脑插网线的地方,里面连着一个网卡)
网卡:每块网卡都会有一串世界上独一无二的数字 MAC 地址
12位16进制的数字,6位产品好,6位流水号
MAC地址作用:标识世界上一台独一无二的计算机

以太网协议的工作方式:
单播:
广播:只能在局域网内实现通信, 无法跨局域实现通信

总结:MAC地址:标识全世界上一台独一无二的计算机

网络层

实现全世界某一台计算机之间的通信

IP地址(IP协议):
点分十进制的数字组成
130.123.31.55
最小范围:0.0.0.0
最大范围:255.255.255.255

IP的版本:
    IPV4
    IPV6
IP的作用:用于标识全世界某一台计算机的位置,局域网的位置

总结:IP地址 + MAC地址:
            标识全世界某一个局域网内的某一台计算机

传输层

TCP与UDP都是基于“端口”实现通信的

TCP:
UDP:

主要是软件与软件之间进行通信
port端口:
        用于标识计算机某一个独一无二的软件
        
总结:IP地址 + MAC地址 + PORT端口:
    标识的是全世界范围内某一个局域网内某台计算机上的某一个软件

应用层

大佬们定制好的一套牛X的协议
HTTP协议
FTP协议

自定义的协议

以上是关于网络编程基础的主要内容,如果未能解决你的问题,请参考以下文章

20155307刘浩《网络对抗》逆向及Bof基础

20155311高梓云《网络对抗》逆向及Bof基础

20145301赵嘉鑫《网络对抗》逆向及Bof基础

[vscode]--HTML代码片段(基础版,reactvuejquery)

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程