〖Web全栈开发①〗—网络编程基础(上)

这篇具有很好参考价值的文章主要介绍了〖Web全栈开发①〗—网络编程基础(上)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

🏘️🏘️个人简介:以山河作礼。
🎖️🎖️:Python领域新星创作者,CSDN实力新星认证,阿里云社区专家博主


网络编程

网络编程概述

📌 计算机网络

📜📜计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

〖Web全栈开发①〗—网络编程基础(上)

📌 网络编程的目的

  • 传播交流信息、数据交换、通信。

📌 想要达到什么效果需要什么

  • 如何准确定位网络上的某台主机。 IP地址+端口。定位到计算机上的某个资源。 ​找到这台主机,如何传输数据。
  • 在网络操作系统中使用的通信协议有TCP/IP、NetBEUI、IPX/SPX、AppleTalk等。

TCP/IP协议

  1. TCP/IP协议是目前最成熟并被广泛使用的通信协议之一,TCP/IP协议不仅广泛应用于各种类型的局域网络,也是Internet的协议标准,用于实现不同类型的网络以及不同类型操作系统的主机之间的通信。
  2. TCP/IP事实上是一个协议系列或协议族,目含了100多个协议,包括ARP、ICMP、IGMP、IP、TCP和UDP等多种协议,其中tcp协议和IP协议是最重要的两个协议。

IP地址

什么是IP

🎯IP(Internet Protocol,Internet协议)是一个无连接的协议,主要负责在主机之间寻址,并为数据包设定路由。

〖Web全栈开发①〗—网络编程基础(上)

  • IP 地址是一个唯一地址,用于标识互联网或本地网络上的设备。IP 代表“互联网协议”,它是控制通过互联网或本地网络发送的数据格式的一组规则。它是互联网工作原理中的关键组成部分
IP组成

📜📜 IP 地址是一串由句点分隔的数字。IP 地址表示为一组四个数字,比如 192.158.1.38 就是一个例子。该组合中的每个数字都可以在 0到 255 的范围内。因此,完整的 IP 寻址范围从 0.0.0.0 到 255.255.255.255。

IP 地址使用过程

📌 IP 地址通常在后台使用。该过程如下所示

  1. 你的设备首先连接到一个已连接到互联网的网络,然后该网络再授予你的设备访问互联网的权限,从而让您的设备间接连接到互联网。
  2. 当你在家时,该网络可能是你的互联网服务提供商 (ISP) 提供的网络。在工作中,它将是你的公司网络。
  3. 你的 IP 地址由 ISP 分配给你的设备。
  4. 你的互联网活动将通过 ISP 传输,他们会使用你的 IP 地址将其路由给你。他们为你提供了互联网访问权限,自然也要由他们负责为设备分配 IP 地址。
  5. 但是,你的 IP 地址可能会更改。例如,打开或关闭调制解调器或路由器可能会更改 IP 地址。您也可以联系你的 ISP,他们可以为你更改 IP 地址。
  6. 在你外出(例如旅行)并随身携带设备时,你在家中使用的 IP 地址并不会跟着你一起走。这是因为,你将使用另一个网络(酒店、机场或咖啡厅等地方的 Wi-Fi)访问互联网,并且将使用由酒店、机场或咖啡厅的 ISP 分配给你的其他(临时)IP 地址。

这个过程也表明,IP 地址存在不同的类型

查看IP
在 Windows 中:

使用命令提示符。
使用 Windows 搜索来搜索“cmd”(不带引号)
在出现的弹出框中,键入“ipconfig”(不带引号)即可获得这些信息。

〖Web全栈开发①〗—网络编程基础(上)

📌 ip地址通常分为ipv4 和 ipv6 主流使用ipv4

  • IPV4:32个二进制位长(4字节),常用点分十进制表示;
  • IPV6:128个二进制位长(16字节)常用冒号分隔表示
  • 冒号十六进:69DC:8864:FFFF:FFFF:0:1280:8C0A:FFFF
  • ipv6作为未来的ip可以容纳所有的电脑

windows使用命令ipconfig 查看ip地址/mac使用命令ifconfig 查看ip地址

ping ip地址 可以快速的检测ip或者网址是否正常访问

Ip地址分类:
  • 全0表示本地地址,全1表示在本地网络中向所有机广播
  • A类地址(1. 0. 0. 1-127.255.255.254):利用IP地址的第一个字节作为网络地址,最高位为0,其余的三个字节作为主机地址。
  • B类地址(128.0.0.1-191.255.255.254 ):利用IP地址的前两个字节作为网络地址,最高位为10,其余的两个字节作为主机地址
  • C类地址(192.0.0.1-223.255.255.254 ):利用IP地址的前三个字节作为网络地址,最高位为110,最后一个字节作为主机地址
  • 本地地址localhost(127.0.0.1-127.255.255.254 ):这是预留的一组IP地址,主要是用来识别主机本身的地址
  • 私有地址(10.x.x.x, 172.16.x.x-172.31.x.x, 192.168.x.x ):局域网所使用的地址段,在公网上不能被路由
子网掩码

ip地址分为网络位和主机位

A–8个网络位+24个主机位

B–16个主机位+16个主机位

C–24个网络位+8个主机位

我们现在用的是ipv4 32位

A:255.0.0.0

B:255.255.0.0

C:255.255.255.0

255.255.255.0 子网掩码 (三个255,代码ip的前3位为网络位)

网络位相同,相当于是相同的网段

端口

  1. "端口"是英文port的意译,可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,
  2. 其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。例如计算机中的80端口、21端口、23端口等。
  3. 物理端口又称为接口,是可见端口,计算机背板的RJ45网口,交换机路由器集线器等RJ45端口。电话使用RJ11插口也属于物理端口的范畴。

1.周知端口(Well Known Ports)

  • 周知端口是众所周知的端口号,范围从0到1023,其中80端口分配给WWW服务,21端口分配给FTP服务等。我们在IE的地址栏里输入一个网址的时候是不必指定端口号的,因为在默认情况下WWW服务的端口是“80”。
  • 网络服务是可以使用其他端口号的,如果不是默认的端口号则应该在
    地址栏上指定端口号,方法是在地址后面加上冒号“:”,再加上端口号。比如使用“8080”作为WWW服务的端口,则需要在地址栏里输入“网址:8080”。
  • 但是有些系统协议使用固定的端口号,它是不能被改变的,比如139 端口专门用于NetBIOS与TCP/IP之间的通信,不能手动改变。

2.注册端口

📜📜端口1024到49151,分配给用户进程或应用程序。这些进程主要是用户选择安装的一些应用程序,而不是已经分配好了公认端口的常用程序。这些端口在没有被服务器资源占用的时候,可以用用户端动态选用为源端口。

3.动态端口(Dynamic Ports)

  • 动态端口的范围是从49152到65535。之所以称为动态端口,是因为它 一般不固定分配某种服务,而是动态分配。(微信,qq都是使用动态的)
  • 我们知道,一台拥有IP地址的主机可以提供许多服务,比如Web服务、FTP服务、SMTP服务等,这些服务完全可以通过1个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP
    地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。
  • 需要注意的是,端口并不是一一对应的。比如你的电脑作为客户机访
    问一台WWW服务器时,WWW服务器使用“80”端口与你的电脑通信,但你的电脑则可能使用“3457”这样的端口。

应用程序进行数据通信的流程

  • 首先通过IP地址找到对应的设备
  • 然后通过端口号找到对应的端口
  • 然后通过端口把数据传输给应用程序

📌 端口可以通过命令netstat -n查看

socket

Socket原理

1.什么是Socket

📜📜 在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信一种约定或一种方式。通过 socket
这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据

📌 Socket通信的数据传输方式,常用的有两种
  a、SOCK_STREAM
  表示面向连接的数据传输方式。数据可以准确无误地到达另一台计算机,如果损坏或丢失,可以重新发送,但效率相对较慢。常见的 http 协议就使用 SOCK_STREAM 传输数据,因为要确保数据的正确性,否则网页不能正常解析。
  b、SOCK_DGRAM
  表示无连接的数据传输方式。计算机只管传输数据,不作数据校验,如果数据在传输中损坏,或者没有到达另一台计算机,是没有办法补救的。也就是说,数据错了就错了,无法重传。因为 SOCK_DGRAM 所做的校验工作少,所以效率比 SOCK_STREAM 高。

📜📜例如:QQ 视频聊天和语音聊天就使SOCK_DGRAM传输数据,因为首先要保证通信的效率,尽量减小延迟,而数据的正确性是次要的,即使丢失很小的一部分数据,视频和音频也可以正常解析,最多出现噪点或杂音,不会对通信质量有实质的影响

python中使用socket模块的函数socket就可以完成。

📌 该函数带有两个参数:

  1. adderss family:可以选择AF_INET(用于internet进程间通信)或者AF_UNIX(用于同一台机器进程间通信)
  2. Type:套接字类型,可以是SOCK_STREAM(流式套接字,主要用于TCP协议)

2.创建一个tcp socket(tcp套接字)

import socket

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

tcp 介绍

🎯tcp是一种面向连接的、可靠的、基于字节流的通讯协议。

  • 特点

    1. 面向连接,提供了可靠的建立连接和拆除连接的方法
    2. 可靠交付
  • 适用场景

    • TCP常用于不可靠的互联网中为应用程序提供面向连接的,可靠的,端到端字节流服务。
  • 举例文章来源地址https://www.toymoban.com/news/detail-446046.html

    • 远程控制
    • 邮件
    • 点对点文件传输
"""
通过socket开发tcp服务端程序步骤
1.创建服务端套接字对象
2.绑定端口号
"""

# 1.创建服务端套接字对象
# socket 类
import socket

# 创建服务端socket对象
# socket.socket(AddressFamily, Type)
# AddressFamily 表示ip地址类型, AF_INET ipv4和 AF_INET6 ipv6
# Type 表示传输协议类型 SOCK_STREAM tcp流

tcp_server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

# 给程序绑定端口号, 端口号  bind() ip 和 端口
tcp_server_socket.bind(("", 8989))

# 设置监听
# 128:最大等待建立连接的个数.
# listen后的套接字只能负责接收客户端的连接请求,不能收发信息. 收发消息使用返回的这个新套接字来完成
tcp_server_socket.listen(128)

到了这里,关于〖Web全栈开发①〗—网络编程基础(上)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【网络编程】网络基础

    需要云服务器等云产品来学习Linux的同学可以移步/--腾讯云--/--阿里云--/--华为云--/官网,轻量型云服务器低至112元/年,新用户首次下单享超低折扣。   目录 一、协议分层 1、为什么要分层 2、OSI七层模型 3、TCP/IP四层协议(五层协议) 二、网络传输流程 1、同一个网段内的两

    2024年02月02日
    浏览(45)
  • Web网络编程第四次试验:数据绑定

    为了帮助同学们完成痛苦的实验课程设计,本作者将其作出的实验结果及代码贴至CSDN中,供同学们学习参考。如有不足或描述不完善之处,敬请各位指出,欢迎各位的斧正! 1、掌握ListControl类控件与数据源的绑定方法。 2、熟练掌握GridView控件的应用。 3、掌握DetailsView控件的

    2024年02月09日
    浏览(40)
  • 〖Web全栈开发⑤〗— CSS基础

    🏘️🏘️个人简介:以山河作礼。 🎖️🎖️: Python领域新星创作者,CSDN实力新星认证,阿里云社区专家博主 🎁🎁:Web全栈开发专栏:《Web全栈开发》免费专栏,欢迎阅读! CSS 的意思为 Cascading Style Sheets,中文名是层叠样式表。 CSS 是由大名鼎鼎的 W3C 中 CSS 工作组来发布以

    2024年02月09日
    浏览(49)
  • 【网络编程】Linux网络编程基础与实战第三弹——网络名词术语

    数据包从源地址到目的地址所经过的路径,由一系列路由节点组成。 某个路由节点为数据包选择投递方向的选路过程。 路由器工作原理 路由器是连接因特网中各局域网、广域网的设备,它会根据信道的情况自动选择和设定路由,以最佳路径,按前后顺序发送信号的设备。

    2024年02月08日
    浏览(46)
  • Linux网络编程:网络基础

    文章目录: 一:协议   二:网络应用设计模式_BS模式和CS模式 三:网络分层模型(OSI七层 TCP/IP四层) 四:通信过程 五:协议格式  1.数据包封装 2.以太网帧格式和ARP数据报格式  3.IP段格式  4.UDP数据报格式 5.TCP数据报格式 六:TCP协议 1.TCP通信时序(面向连接的可靠数据通

    2024年02月12日
    浏览(83)
  • 网络编程 p1 网络基础

    概念:两台设备之间通过网络实现数据传输; 网络通信:将数据通过网络从一台设备传输到另一台设备; java.net包下提供了一系列的类或接口,供程序员使用,完成网络通信; 概念:两台或多台设备通过一定物理设备连接起来构成了网络; 根据网络的覆盖范围不同,对网络

    2024年02月16日
    浏览(33)
  • 网络编程 tcp udp http编程流程 网络基础知识

    OSI分层:应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 tcp/ip: 应用层 传输层 网络层 数据链路 ip地址:唯一标识一台主机 ipv4 32位 ipv6 128位 寻址 可以反映物理上的一个变化 MAC地址:48 固化在计算机中 ip地址又两部分构成:网络号+主机号 端口号:标识一个应用程序

    2024年02月13日
    浏览(76)
  • linux【网络编程】之网络基础

    “协议” 是一种约定 软件设计方面的优势—低耦合 分层依据:功能比较集中,耦合度较高的模块—高内聚 每一层都要解决特定的问题 每一层都有自己匹配的协议,每一层协议都解决自己的问题 OSI(Open System Interconnection,开放系统互连)七层网络模型称为开放式系统互联参

    2024年02月04日
    浏览(54)
  • Linux网络编程 网络基础知识

    目录 1.网络的历史和协议的分成 2.网络互联促成了TCP/IP协议的产生 3.网络的体系结构 4.TCP/IP协议族体系 5.网络各层的协议解释 6.网络的封包和拆包 7.网络预备知识      Internet-\\\"冷战\\\"的产物 1957年十月和十一月,前苏联先后欧两颗”Spuinik”卫星上天 1958年美国总统艾森豪威尔向

    2024年02月10日
    浏览(48)
  • 【Linux网络编程】网络基础一

    从今天开始我们将要从系统横跨到网络的学习了,因此有些书我们就可以读起来了。 操作系统 原理: 《操作系统精髓与设计原理》、《现代操作系统》 Linux原理方面的书 : 《Linux内核设计与实现》–陈莉君、《深入理解Linux内核》(选读–不作为重点) Linux编程方面的书: 《

    2024年04月15日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包