首页 > 编程语言 >网络编程

网络编程

时间:2024-01-24 09:46:19浏览次数:28  
标签:计算机 ip 编程 网络 请求 客户端 服务端 socket

网络编程
一、软件开发架构
C/S架构

  • Client :客户端(24小时不间断提供服务)
  • Server :服务端(客户需要服务时,就去访问服务端)

ps:服务端需要遵循的原则:

  1. 服务端与客户端都需要有唯一的地址,但是服务端的地址必须固定/绑定
  2. 对外一直提供服务,稳定运行
  3. 服务端应该支持并发
    比如:微信客户端,QQ客户端
  • 优点:软件的使用稳定;节省网络资源
  • 缺点:安装麻烦,用户体验差,软件的每一次更新,用户都需要重新下载或更新版本

B/S架构:

  • Browser(本质上也是一个客户端): 浏览器
  • Server: 服务端

比如: 在浏览器上输入一个 网址
-优点:软件的使用方便,无需跟着软件的更新去下载
-缺点:如果网络不稳定,软件的使用就不稳定

其中,比较流行的是B/S架构,用户体验高

二、网路基础
网路的建立目的是为了数据交互(通信)

早期的电话需要有电话线、后面的大屁股电脑需要插网线、再后来的智能手机电脑需要有网卡。
也就是说网络通信的第一步必须得先有物理连接介质

有了物理连接介质就能实现通信了吗
不同语言国家的人彼此之间打电话沟通,彼此都无法理解对方说了些什么,需要双方都精通对方的语言或者用一种全世界通用的语言进行沟通交流才可以解决。

回到计算机上,不同计算机之间要想实现无障碍的通信,除了物理连接介质以外,也应该有一套共用的标准,只有大家都按照这个标准来,计算机之间才能实现通信,这个标准我们叫它互联网协议!

网路:物理连接介质+互联网协议

三、互联网协议(OSI七层协议)
互联网协议按照功能不同分为osi七层或tcp/ip五层或tcp/ip四层,重点关注tcp/ip五层协议

在这里插入图片描述
1.物理层:获取到对象计算机的电信号数据(高低电平)
如:0101010111
010: 你
1011: 爱
101: 我
问题: 无法获取具体数据内容,将电信号数据扔给数据链路层

2.数据链路层:

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

物理层接收到一长串010101如何切分取值,这个是数据链路层的里面的以太网协议

以太网协议:

它规定了0101的二进制电信号的分组方式,将电信号转成数据报。
数据报分为报头head和数据data两部分。head包含发送者,接收者和数据类型
但凡接入互联网的主机,必须有一块网卡。
网卡(用来标识全世界独一无二的一台计算机),每块网卡出厂时都会被烧制上一个全世界唯一的编号,通常由12位16进制数表示(前六位是厂商编号,后六位是流水线号),这些数称之为“mac地址”
“mac地址”作用:标识全世界上一台独一无二的计算机。
以太网协议的通信方式:单播和广播

弊端:广播风暴 只能在局域网内实现通信,无法跨局域网通信

在这里插入图片描述

3.网络层:实现全世界某一台计算机之间的通信

每台计算机都必须有一个ip地址(ip协议),其由点分十进制的数字组成,如 180.101.49.11

最小范围: 0.0.0.0
最大范围: 255.255.255.255
ip的作用: 用于表示全世界某一局域网的位置。

ip地址 + mac地址:标识全世界某一个局域网内的某一台计算机。

4.传输层:

TCP/UDP协议都是基于端口工作的协议

TCP:三次握手,四次挥手
-TCP协议建立双向通道。
优点:数据安全
缺点:传输速度慢,粘包

三次握手,建连接:

客户向服务端发送建立连接的请求
服务端返回收到请求的信息给客户端,并且同时发送往客户端建立连接的请求
客户端接收到服务端发来的请求,返回接收成功得信息给服务端,完成双向连接
总结:之所以称之为三次握手就是因为中间的 服务端的同意和请求 合并成了一次请求

ps:
反馈机制:
客户端往服务端发送请求,服务端必须返回响应,告诉客户端收到请求了,并且将服务端的数据一并返回给客户端。
C ----> S:一次请求,必须有一次响应。

四次挥手,断连接:

客户端由于已经没有任何需要发送给服务端的消息了,所以发起断开客户端到服务端的通道请求

服务端收到该请求后同意了 至此客户端到服务端的单项通道断开

服务端这个时候不会立刻朝客户端发器请求说那我也断开到你家的通道吧,服务端需要想想我手上还有没有需要发送给客户端的消息,如果还有的话,那我不能立马断开,先把数据发完才能断。服务端检查后发现没有数据需要发送了,再朝客户端发起断开服务端到客户端的通道请求

客户端同意该请求,至此四次挥手完成

总结:挥手必须是四次,中间的两次不能合并成一次,原因就在于需要检查是否还有数据需要给对方发送

UDP:称之为数据包协议。(了解)
特点:
-1)不需要建立链接
-2)不需要知道对方是否收到
-3)数据不安全,容易丢失
-4)传输速度快
-5)能支持并发
-6)不会粘包
-7)无需先启动服务端
优点:传输速度快,能支持并发,不会粘包
缺点:数据不安全,容易丢失

应用场景:早期的QQ聊天室

python实现网络通信:

server.py

import socket

socket.SOCK_DGRAM--->UDP协议

server = socket.socket(type=socket.SOCK_DGRAM)

服务端需要绑定一个地址,让别人知道你在哪里

server.bind(('127.0.0.1',9001)
while True:
#发送数据给服务端的用户地址
data,addr = server.recvfrom(1024)
print(addr)
print(data)
msg = input('服务端--->客户端:').encode('utf-8')
#无论服务端还是客户端,发送消息时,都必须知道对方是谁
server.sendto()

client.py

import socket
client = socket.socket(type=socket.SOCK_DGRAM)
while True:
msg = input('客户端 --->服务端'

标签:计算机,ip,编程,网络,请求,客户端,服务端,socket
From: https://www.cnblogs.com/szyl/p/17983920

相关文章

  • 【面试突击】并发编程、线程池面试实战
    欢迎关注公众号(通过文章导读关注:【11来了】),及时收到AI前沿项目工具及新技术的推送!在我后台回复「资料」可领取编程高频电子书!在我后台回复「面试」可领取硬核面试笔记!前言最近在更新面试突击专栏,我把每一篇将字数都尽量控制在2000字以内,可能在文章里边写的没有那么细致,主要是......
  • 《Java核心编程》PDF
    内容简介本书主要基于Java13来介绍Java核心编程相关的知识点,以及从Java8至Java13以来的新特性,主要内容包括:Java语言基础、面向对象编程、集合框架、异常处理、I/O处理、网络编程、并发编程、基本编程结构的改进、垃圾回收器的增强、使用脚本语言、Lambda表达式与函数式编程、St......
  • 卷积神经网络学习笔记
    全连接神经网络的结构全连接神经网络的整体结构可以简化为智能函数\(y=f_θ(x)\)输入和输出层一般为数据矩阵全连接网络的单元结构神经网络的思路:从单元到整体一个单元的结构:\(X_1,X_2,X_3...\)是很多矩阵,然后这些矩阵分别乘上对应的权重矩阵,再加上偏置矩阵b,输......
  • 基于信号功率谱特征和GRNN广义回归神经网络的信号调制类型识别算法matlab仿真
    1.算法运行效果图预览 2.算法运行软件版本MATLAB2022a 3.算法理论概述       本课题,我们主要对MPSK和MFSK调制类型进行识别。在进行信号调制方式区分之前,首先需要对PSK和FSK进行区分,提出了一种基于信号功率谱的PSK和FSK调制方式的识别方法。信号的功率谱计算过程......
  • 针对产线物联网IoT设备/工控机接入网络的敏捷终端准入控制方案
    在工业数字化转型过程中,企业在工业产线和数字化场景,除了面临大量互联网终端,还有传统的工控终端和新加入的物联网(IoT)设备。在日益严峻的网络攻击面前,工控终端和IoT设备几乎“裸奔”,传统安全产品也束手无策。若产线设备被恶意攻击、操控,将会导致产线停摆、业务中断、数据泄露、重大经......
  • 工作中的网络知识之四_时延
    工作中的网络知识之四_时延时延的巨大影响高性能最大的杀手是时延.不管是CPU取指还是取操作数.还是内存读取和写入还是磁盘的读写.以及网络的收发包.高性能最大的屏障其实是时延.本机的很多时延可以通过增加cache,增加索引,利用程序的时间和空间局限性进行优化.......
  • 【STM32使用Arduino编程0】Arduino_Core_STM32固件的安装和使用
    【STM32使用Arduino编程0】Arduino_Core_STM32固件的安装和使用对于STM32来说,使用Arduino编程可以大大降低编程难度,同时也可以使用Arduino的许多库。Arduino_Core_STM32介绍要使用Arduino对STM32进行编程需要使用相应的固件,目前官方的固件为Arduino_Core_STM32。对应的github......
  • 读《计算机网络-自顶向下方法》有感
    本书看至101页,基于已看的100页做出如下感想,本感想将持续更新。这本书采用总分形式,第一章先进行总的概述,之后几章依次从应用层,运输层,网络层,链路层,物理层,然后再对未来技术的展望,5G等。计算机网络就是解决通信之间的事,类似于人与人之间的交流。协议就是之间的种种规定,分层架构就是......
  • 并发编程之协程
    协程1.什么是协程计算机中提供了:线程、进程用于实现并发编程(真实存在)。协程(Coroutine),是程序员通过代码搞出来的一个东西(非真实存在)。协程也可以被称为微线程,是一种用户态内的上下文切换技术。简而言之,其实就是通过一个线程实现代码块相互切换执行(来回跳着执行)。例如:deff......
  • 并发编程之多线程
    多线程1.什么是线程就是一条流水线工作的过程,一条流水线必须属于一个车间,一个车间的工作过程是一个进程车间负责把资源整合到一起,是一个资源单位,而一个车间内至少有一个流水线流水线的工作需要电源,电源就相当于cpu所以,进程只是用来把资源集中到一起(进程只是一个资源单位,或者......