网络通信(一)

2024-05-25 15:28
文章标签 网络通信

本文主要是介绍网络通信(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

网络编程

1.网络编程概念及相关名词 :

网络编程是计算机科学中一个重要的领域,它涉及到在不同计算机之间通过计算机网络进行通信和数据交换的程序设计。网络编程的核心是实现网络通信协议,这些协议定义了数据如何在网络上发送、接收和解释。

以下是网络编程的一些关键概念:

  1. 协议(Protocols):网络通信遵循的规则。例如,TCP/IP、HTTP、FTP、SMTP等。

  2. 套接字(Sockets):网络编程中的基本构建块,用于在客户端和服务器之间建立连接。

  3. 客户端/服务器模型(Client/Server Model):这是一种网络架构,其中客户端发起请求,服务器处理请求并返回响应。

  4. API(Application Programming Interface):应用程序接口,用于简化网络编程任务,如发送HTTP请求或处理网络数据。

  5. 多线程和异步编程:为了提高性能和响应能力,网络应用程序通常使用多线程或异步编程技术。

  6. 网络安全:保护网络通信免受未经授权的访问和数据泄露。

  7. 网络库和框架:为了简化网络编程,存在许多库和框架,如Python的requests库,Java的Netty框架等。

  8. 网络设备和架构:了解路由器、交换机、防火墙等网络设备和它们的工作原理也是网络编程的一部分。

网络编程的应用非常广泛,包括但不限于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地址

本机ip:127.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占用80,FTP占用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则提供了更少的开销和更快的传输速度,适用于对实时性要求高的应用。

这篇关于网络通信(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1001894

相关文章

LoRaWAN在嵌入式网络通信中的应用:打造高效远程监控系统(附代码示例)

引言 随着物联网(IoT)技术的发展,远程监控系统在各个领域的应用越来越广泛。LoRaWAN(Long Range Wide Area Network)作为一种低功耗广域网通信协议,因其长距离传输、低功耗和高可靠性等特点,成为实现远程监控的理想选择。本文将详细介绍LoRaWAN的基本原理、应用场景,并通过一个具体的项目展示如何使用LoRaWAN实现远程监控系统。希望通过图文并茂的讲解,帮助读

如何学习 Java 中的 Socket 编程,进行网络通信

Socket编程是网络编程的核心技术之一,它使得不同主机之间可以进行数据通信。Java提供了丰富的网络编程API,使得编写网络应用程序变得相对简单和直观。本文将详细讲解如何学习Java中的Socket编程,并通过示例代码展示如何实现网络通信。 一、Socket编程基础 1.1 什么是Socket? Socket是一种网络通信的端点,包含IP地址和端口号。在网络通信中,一个Socket实例代表

网络通信基础重难点解析 03:bind 函数难点解析

bind 函数如何选择绑定地址 上一节的服务器代码中演示了 bind 函数的使用方法,让我们再看一下相关的代码: struct sockaddr_in bindaddr;bindaddr.sin_family = AF_INET;bindaddr.sin_addr.s_addr = htonl(INADDR_ANY);bindaddr.sin_port = htons(3000);if

网络通信的两大支柱:TCP与UDP协议详解(非常详细)零基础入门到精通,收藏这一篇就够了

在构建现代互联网通信的基石中,TCP(传输控制协议)和UDP(用户数据报协议)起着至关重要的作用。本文将深入探讨两者的区别及应用场景。 1 TCP和UDP的共同点 传输层协议: TCP和UDP都是传输层协议,位于OSI模型的第四层,负责在网络中的不同主机上的应用程序之间提供数据传输服务。 支持的数据类型: 两者均支持传输文件、视频、图片等二进制数据。 端到端通信: 两

Volley源码学习——打造网络通信框架

本文主旨 本文主要是从设计的角度去分析Volley,根据其网络通信框架,带领读者一步一步打造自己的网络通信框架,从而让读者更深刻地理解Volley网络通信框架的形成过程。 Volley网络通信基本框架 Volley基本框图 国际惯例,既然是要分析Volley,就先贴上Volley的官方框图 这里博主懒得翻墙去Google找了,就直接盗用郭霖大神的图片 本文不涉及如何使用Volley

PS通过GTX实现SFP网络通信1

将 PS ENET1 的 GMII 接口和 MDIO 接口 通过 EMIO 方 式引出。在 PL 端将引出的 GMII 接口和 MDIO 接口与 IP 核 1G/2.5G Ethernet PCS/PMA or SGMII 连接, 1G/2.5G Ethernet PCS/PMA or SGMII 通过高速串行收发器 GTX 与 MIZ7035

浅谈网络通信(3)

文章目录 一、TCP[!]1.1、TCP协议报文格式1.2、TCP十大机制1.2.1、确认应答机制1.2.2、超时重传机制1.2.3、连接管理机制1.2.3.1、三次握手[其流程至关重要,面试必考]1.2.3.2.1、那为啥要建立连接??建立连接的意义是啥?? 1.2.3.2、四次挥手 1.2.4、滑动窗口机制1.2.5、流量控制机制 一、TCP[!] 1.1、TCP协议报文

linux网络通信之concurrency模型select

客户端 /*************************************************************************> File Name: client.c> Author: 联合作战实验室> Email: v.manstein@qq.com > Created Time: Fri 24 Mar 2017 07:57:28 AM PDT*******

linux网络通信之udp

客户端 /*************************************************************************> File Name: client.c> Author: 联合作战实验室> Mail: v.manstein@qq.com> Created Time: Thu 23 Mar 2017 11:11:10 AM CST*********

linux网络通信之tcp

客户端 /*************************************************************************> File Name: client.c> Author: 联合作战实验室> Mail: v.manstein@qq.com> Created Time: Wed 22 Mar 2017 02:47:10 PM CST*********