做网站的行业平台,永久免费网站空间,优化大师app下载安装,网站title的作用网络编程
1.网络编程概念及相关名词 #xff1a;
网络编程是计算机科学中一个重要的领域#xff0c;它涉及到在不同计算机之间通过计算机网络进行通信和数据交换的程序设计。网络编程的核心是实现网络通信协议#xff0c;这些协议定义了数据如何在网络上发送、接收和解释。…网络编程
1.网络编程概念及相关名词
网络编程是计算机科学中一个重要的领域它涉及到在不同计算机之间通过计算机网络进行通信和数据交换的程序设计。网络编程的核心是实现网络通信协议这些协议定义了数据如何在网络上发送、接收和解释。
以下是网络编程的一些关键概念 协议Protocols网络通信遵循的规则。例如TCP/IP、HTTP、FTP、SMTP等。 套接字Sockets网络编程中的基本构建块用于在客户端和服务器之间建立连接。 客户端/服务器模型Client/Server Model这是一种网络架构其中客户端发起请求服务器处理请求并返回响应。 APIApplication Programming Interface应用程序接口用于简化网络编程任务如发送HTTP请求或处理网络数据。 多线程和异步编程为了提高性能和响应能力网络应用程序通常使用多线程或异步编程技术。 网络安全保护网络通信免受未经授权的访问和数据泄露。 网络库和框架为了简化网络编程存在许多库和框架如Python的requests库Java的Netty框架等。 网络设备和架构了解路由器、交换机、防火墙等网络设备和它们的工作原理也是网络编程的一部分。
网络编程的应用非常广泛包括但不限于Web开发、移动应用、物联网(IoT)、分布式系统、在线游戏、实时通信系统等。掌握网络编程技能对于现代软件开发人员来说非常重要。
2.网络通信三要素
IP设备在网络中的地址是唯一的标识全称互联网协议地址
端口应用程序在设备中的唯一标识
协议设备连接和数据在网络中传输的规则
IP
ip地址有两种形式
ipv4由4字节32位二进制数组成分为4组每组8位二进制数每组间用点.隔开且每组用十进制表示
ipv6由128位二进制数组成分为8组每组16位二进制数每四个数为一个十六进制数每组间用:隔开
ip域名
域名 是一种易于记忆的名称用于代替IP地址。 域名系统DNS将域名转换为IP地址。每个设备都会内置一个本地的DNS服务器 例如google.com是一个域名DNS会将其解析为一个IP地址如172.217.3.78。
域名解析 当你在浏览器中输入一个网址URL如 www.google.com浏览器首先会向DNS服务器发起请求查询该域名对应的IP地址。 DNS服务器会返回域名对应的IP地址然后浏览器使用这个IP地址来建立与目标服务器的连接。 这个过程对于用户来说是透明的用户只需要记住域名而不需要知道背后的IP地址。 如果DNS服务器无法解析该URL那么就会向运营商发送再由运营商查询并返回dns服务器
域名结构 域名通常由多个部分组成用点分隔从右到左分别是子域名、次级域名、主域名和顶级域名TLD。 例如在 www.google.com 中www 是子域名google 是主域名com 是顶级域名。
顶级域名TLD 顶级域名分为几类包括 通用顶级域名gTLD如 .com、.net、.org 等。 国家和地区代码顶级域名ccTLD如 .cn中国、.uk英国、.de德国等。 新通用顶级域名nTLD如 .app、.blog、.online 等。
域名和IP地址之间的转换是互联网通信的基础使得用户可以不必记住复杂的数字地址而只需要使用易于记忆的域名来访问网站。
公网、内网
公网是可以连接互联网的ip地址
内网也叫做局域网只能组织内部机构使用一般局域网ip范围192.168.0.0~192.168.255.255
特殊ip地址
本机ip127.0.0.1 、localhost
IP常用命令
ipconfig查看ip信息
ping ip/url查看设备间的连通情况
InetAdress提供的常用方法
以下是InetAddress类提供的一些常用方法的表格
方法名描述getByAddress(String host, byte[] addr)根据主机名和IP地址字节数组创建InetAddress对象。getByName(String host)根据主机名获取其IP地址的InetAddress对象进行DNS解析。getAllByName(String host)返回包含主机所有IP地址的InetAddress对象数组。getCanonicalHostName()返回该地址的官方主机名。getHostAddress()返回该地址的IP地址字符串表示。getHostName()返回该地址的主机名。isReachable(int timeout)测试地址是否可达指定超时时间。isReachable(NetworkInterface netif, int ttl, int timeout)通过指定网络接口测试地址是否可达。equals(Object obj)检查两个InetAddress对象是否相等。hashCode()返回该地址的哈希码。toString()返回该地址的字符串表示包括主机名和IP地址。isMulticastAddress()检查地址是否是多播地址。isAnyLocalAddress()检查地址是否是“任何本地地址”。isLoopbackAddress()检查地址是否是回环地址127.0.0.1。isLinkLocalAddress()检查地址是否是链路本地地址。isSiteLocalAddress()检查地址是否是站点本地地址。isMCGlobal()检查地址是否是全球多播地址。isMCNodeLocal()检查地址是否是节点本地多播地址。isMCLinkLocal()检查地址是否是链路本地多播地址。isMCSiteLocal()检查地址是否是站点本地多播地址。
请注意这个表格并不包含InetAddress类的所有方法只是列出了一些常用的方法。例如
import java.net.InetAddress;public class Main{public static void main(String[] args) throws Exception {//获取本机ip地址对象InetAddress ip InetAddress.getLocalHost();//获取本机名和ip地址具体信息System.out.println(ip.getHostName());System.out.println(ip.getHostAddress());//获取指定域名或指定ip的ip地址对象InetAddress ip1 InetAddress.getByName(www.baidu.com);System.out.println(ip1.getHostName());System.out.println(ip1.getHostAddress());//ping操作System.out.println(ip1.isReachable(6000));}
}
端口
端口是用来标志应用程序在设备上的位置的被规定为一个16位的二进制数端口范围是0~65535
端口分类
周知端口0~1023被一些预先定义的知名应用占用如HTTP占用80FTP占用21
注册端口1024~49151分配给用户进程和一些应用程序
动态端口49152~65532不固定分配某种进程而是动态分配
注意我们自己开发的程序一般使用注册端口而且一个设备中不能出现两个程序的端口一样否则报错
通信协议
协议是网络上的通信设备事先规定的连接规则和数据的传输规则
OSI模型和TCP/IP模型
OSI模型层级TCP/IP模型层级描述和任务应用层7应用层4为用户和应用软件提供网络服务接口如HTTP、FTP、SMTP等。表示层6应用层4数据格式转换、数据加密、压缩和解密等。会话层5应用层4管理和控制两个节点之间的会话连接。传输层4传输层3确保数据的完整性和可靠性如TCP和UDP协议。网络层3网络层2负责数据包的路由选择和传输如IP协议。数据链路层2网络接口层1确保无误的数据传输帧的封装和拆封错误检测和纠正。物理层1网络接口层1物理媒介上传输原始比特流涉及电气信号、光信号等。
注意TCP/IP模型通常被分为四个层次而OSI模型是七个层次。在上述表格中TCP/IP模型的应用层包括了OSI模型的应用层、表示层和会话层的任务。同样TCP/IP模型的传输层对应OSI模型的传输层网络层对应OSI模型的网络层而网络接口层则对应OSI模型的数据链路层和物理层。
TCP/IP模型的层次结构相对简化更贴近实际的互联网协议栈而OSI模型则提供了一个更为详细的理论框架。尽管两者在层次划分上有所不同但它们在网络通信中扮演的角色和完成的任务是相似的。
传输层的两个协议
传输层主要负责在网络中的两个端点之间提供可靠的数据传输服务。在TCP/IP模型中传输层有两个主要的通信协议
传输控制协议TCP TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。 它提供全双工通信即数据可以在两个方向上同时传输。 TCP通过三次握手建立连接并使用序列号和确认应答机制来确保数据包的顺序和完整性。
理解三次握手建立连接
1客户端发送建立连接请求“你能听到吗”
2服务端响应请求“可以听到”
3客户端再次正式发送建立连接请求“ok了” TCP通过四次挥手断开连接
理解四次挥手断开连接
1客户端发送断开连接请求“我要走了”
2服务端响应请求-稍等“等会”
3服务端完成所有数据传输【可能存在最后一次数据传输】发送响应-可以断开了“来了来了可能还给你塞一颗苹果”
4客户端正式发送断开连接请求 它还包括流量控制和拥塞控制机制以避免网络过载。 TCP常用于需要可靠传输的应用如Web浏览HTTP、文件传输FTP和电子邮件SMTP。 由于传输数据的通信较多效率相对较慢
用户数据报协议UDP UDP是一种无连接的、不可靠的、基于数据报的传输层通信协议。 它允许应用程序发送被称为数据报的独立信息包而不需要事先建立连接。 由于UDP的简单性和低延迟它常用于那些可以容忍一定丢包率的应用如实时视频和音频传输、在线游戏和DNS查询。 UDP不保证数据包的顺序、完整性或可靠性效率较快
TCP和UDP各有优势和适用场景开发者可以根据应用的需求选择最合适的协议。TCP提供了更可靠的服务适用于需要确保数据完整性的应用而UDP则提供了更少的开销和更快的传输速度适用于对实时性要求高的应用。