网络编程:是一种在计算机网络上实现通信和数据交换的编程技术
计算机网络:计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。
网络编程的目的:传播交流信息、数据交换、通信。
达到目的需要什么:
-
如何准确定位网络上的其他主机。
-
找到这台主机,如何传输数据。
通过IP地址和端口来定位到计算机上的某个资源。
首先我们先了解什么是TCP/IP协议以及IP协议
TCP/IP协议
TCP/IP协议是目前最成熟并被广泛使用的通信协议之一,不仅广泛应用于各种类型的局域网络,也是互联网的协议标准。
TCP/IP协议主要用于实现不同类型的网络以及不同类型操作系统的主机之间的通信。
TCP/IP是一个协议系列或协议族,其中包含了100多个协议,包括ARP、ICMP、IGMP、IP、TCP和UDP等多种协议,其中TCP协议和IP协议是最重要的两个协议。
IP协议
IP协议全名[Internet Protocol,Internet协议] 是一个无连接的协议,主要负责在主机之间寻址,并为数据包设定路由。
IP 地址是一个唯一地址,用于标识互联网或本地网络上的设备。IP 代表“互联网协议”,它是控制通过互联网或本地网络发送的数据格式的一组规则。它是互联网工作原理中的关键组成部分
我们可以通过以下方法来查看自己的IP地址
第一步需要先进入命令窗口,以下演示win的几种方法。
-
如win+r, 然后输入cmd进入命令窗口.
-
使用 Windows 底部搜索来搜索cmd
-
在资源管理器的搜索栏目中输入cmd
然后输入以下命令即可
ipconfig
mac使用命令ifconfig 查看IP地址
补充点:
-
IP地址通常分为ipv4 和 ipv6 ,目前主流使用ipv4,他们的特定如下
-
IPV4:32个二进制位长(4字节),常用点分十进制表示;
-
IPV6:128个二进制位长(16字节)常用冒号分隔表示
-
冒号十六进:69DC:8864:FFFF:FFFF:0:1280:8C0A:FFFF
-
ipv6出现主要是作为未来的IP,其特点是可以容纳所有的电脑
-
目前不用ipv6的原因有:
- 覆盖范围小,有些软件,应用程序并不能使用ipv6
- 兼容性问题
- 增加数据传输的成本
- ipv6有16个字节,不易记忆
通过以下命令可以知道IP地址是否可以正常访问
ping IP地址
我们也可以使用ping 公网的ip地址也能得到公网ip的响应
IP地址分类:
IP地址的分类和划分使得网络能够更好地组织和管理,有助于实现有效的数据传输和网络通信
IP地址的分类是基于地址的前几位,也被称为网络地址部分。这些位用于标识网络的范围。对于不同类别的地址,网络地址部分的位数是不同的,从而决定了可用的主机地址的数量。
-
以下为IP分类:
-
全0表示本地地址,全1表示在本地网络中向所有机广播。
-
A类地址[1. 0. 0. 1-127.255.255.254]
-
B类地址[128.0.0.1-191.255.255.254]
-
C类地址[192.0.0.1-223.255.255.254]
-
本地地址[127.0.0.1-127.255.255.254]
-
私有地址[10.x.x.x, 172.16.x.x-172.31.x.x, 192.168.x.x] 局域网所使用的地址段,在公网上不能被路由
-
子网掩码
子网掩码是一种用于确定一个IP地址中哪些位属于网络地址部分和哪些位属于主机地址部分的掩码。
它通常与IP地址一起使用,用于划分IP地址空间,将网络地址和主机地址的边界进行分隔。
前面说过IP分类,可以通过子网掩码判断是否处于相同网段
-
识别网络位与主机位,ipv4是32位的:
-
A类:8个网络位 + 24个主机位
-
B类:16个网络位 + 16个主机位
-
C类:24个网络位 + 8个主机位
-
-
那么它们对应的子网掩码
-
A类:255.0.0.0
-
B类:255.255.0.0
-
C类:255.255.255.0
-
其中C类255.255.255.0 子网掩码 (三个255,代码IP的前3位为网络位) 档你和其他人的网络位相同,那么你们相当于是在同一个局域网中
端口
端口(port)可以认为是设备与外界通讯交流的出口。
-
端口可分为虚拟端口和物理端口,
-
虚拟端口指计算机内部或交换机路由器内的端口,不可见。例如计算机中的80端口、21端口、23端口等。
-
物理端口又称为接口,是可见端口,计算机背板的RJ45网口,交换机路由器集线器等RJ45端口。电话使用RJ11插口也属于物理端口的范畴。
-
端口分类
-
1-周知端口
-
周知端口是众所周知的端口号,范围从0到1023,其中80端口分配给WWW服务,21端口分配给FTP服务等。我们在IE的地址栏里输入一个网址的时候是不必指定端口号的,因为在默认情况下WWW服务的端口是“80”。
-
网络服务是可以使用其他端口号的,如果不是默认的端口号则应该在 地址栏上指定端口号,方法是在地址后面加上冒号“:”,再加上端口号。比如使用“8080”作为WWW服务的端口,则需要在地址栏里输入“网址:8080”。
-
但是有些系统协议使用固定的端口号,它是不能被改变的,比如139 端口专门用于NetBIOS与TCP/IP之间的通信,不能手动改变。
-
-
2 -注册端口
-
端口1024到49151,分配给用户进程或应用程序。这些进程主要是用户选择安装的一些应用程序,而不是已经分配好了公认端口的常用程序。这些端口在没有被服务器资源占用的时候,可以用用户端动态选用为源端口。
-
-
3-动态端口
-
动态端口的范围是从49152到65535。之所以称为动态端口,是因为它 一般不固定分配某种服务,而是动态分配。(微信,QQ都是使用动态的)
如何区分服务:
我们知道,一台拥有IP地址的主机可以提供许多服务,这些服务完全可以通过一个IP地址来实现。那么,主机是怎样区分不同的网络服务呢?显然不能只靠IP地址,因为IP 地址与网络服务的关系是一对多的关系。实际上是通过“IP地址+端口号”来区分不同的服务的。
需要注意的是,端口并不是一一对应的。比如你的电脑作为客户机访 问一台WWW服务器时,WWW服务器使用“80”端口与你的电脑通信,但你的电脑则可能使用“3457”这样的端口。
应用程序进行数据通信的流程:
-
首先通过IP地址找到对应的设备
-
然后通过端口号找到对应的端口
-
然后通过端口把数据传输给应用程序
端口可以通过以下命令查看
netstat -n