网络程序设计基础概述

news/2024/10/15 21:58:11/

文章目录

  • 前言
  • 一、网络程序设计基础
  • 二、网络协议
    • 1.IP协议
    • 2.TCP与UDP协议
  • 三、端口与套接字
  • 总结

前言

        网络程序设计编写的是与其他计算机进行通信的程序代码。Java将网络程序所需要的东西封装成了不同的类。开发者只需要创建这些类的对象,调用相应的方法,即使不具备网络知识,也可以进行网络通信程序的开发。


一、局域网与因特网

        局域网(Local Area Network,简称LAN)是在相对较小的地理范围内,由计算机和其他网络设备互联而成的网络。

        局域网通常在家庭、学校、办公室或者建筑物内部使用,用于在其中共享资源、传输数据和实现通信。局域网的范围通常限制在几百米到几千米之间。使用的网络技术可以包括以太网、Wi-Fi、蓝牙等。局域网可以连接多台计算机,让它们可以共享文件、打印机、互联网连接等,提供高效的数据传输和信息交换。通过路由器这种工具,我们才能从局域网访问到广域网。

        广域网(Wide Area Network,简称WAN)是一种广泛分布在较大地理范围内的计算机网络。广域网可以连接不同地区、不同城市甚至不同国家的计算机和网络设备,允许它们之间进行通信和数据交换。

        广域网通常使用公共的通信线路,如电话线、光纤、无线电等,以连接远距离的终端设备。广域网的目的是提供高速、可靠和安全的数据传输,使得远距离的用户和机构能够进行远程办公、数据共享和资源访问等操作。广域网广泛应用于企业、政府机构、教育机构和互联网服务提供商等领域。

        因特网是一种全球性的计算机网络系统,通过各种通信协议(包括TCP/IP协议)连接全球各地的计算机和网络设备,是由无数个LAN和WAN组成的。

        因特网允许人们共享信息、数据和资源,并提供了大量的在线服务,如电子邮件、文件传输、在线搜索、社交媒体等。因特网的发展和普及已经改变了人们的生活方式和工作方式,成为现代社会不可或缺的一部分。

        若想深入了解局域网、广域网、Wifi和WLAN的联系和区别,可以点击下方博客链接,这个up主(物联网老王)的博客更加清晰:

一文读懂局域网、广域网、WLAN、WiFi的联系与区别

二、网络协议

        网络协议规定了计算机之间连接的物理、机械、电气等特征,计算机之间的相互寻址规则,数据发送冲突的解决方式,长数据如何分段传送与接收等内容。以下简单介绍几个常用的网络协议。  

1.IP协议

        Internet Protocol,简称IP,是一种网络协议,被称为IP协议。Internet网络采用的协议是TCP/IP协议。

        值得注意的是,此处的TCP/IP协议并非指TCP协议和IP协议是同一个协议,TCP协议负责在网络上建立可靠的连接和进行数据传输,而IP协议负责实现网络间的数据路由和寻址。

        Internet网络依靠TCP/IP协议,在全球范围内实现了不同硬件结构、不同操作系统、不同网络系统间的互联。Internet网络上数以计亿的主机都被分配了Internet地址,也就是IP地址(IP地址一般情况下用户无法更改)。

        目前IP地址的格式为IPv4(例如:192.168.0.1):

        IPv4(Internet Protocol version 4)是网络协议的第四个版本,是目前广泛使用的互联网协议之一。它定义了网络中数据包的传输方式和地址分配方式。IPv4使用32位的地址格式,共有4个8位的字段组成(例如:192.168.0.1),每个字段用十进制表示,范围为0-255。这样的可分配的IP地址格式可以表示大约42亿个。

        由于互联网的快速发展以及IP地址的有限性,IPv4的地址资源逐渐枯竭。为了解决这个问题,IPv6(Internet Protocol version 6)被推出,并逐渐取代了IPv4的使用,使用16个字节来表示IP地址。

        TCP/IP模式是一种层次结构,共分四层,分别为应用层、传输层、互联网层和网络层。各层实现特定的功能,提供特定的服务和访问接口,并且各自具有相对的独立性。

  1. 应用层 (Application Layer):应用层提供网络应用程序与网络协议之间的接口,用于实现用户应用的功能。它可以包含多种协议,如HTTP、FTP、SMTP等,用于实现不同的应用程序和服务。

  2. 传输层 (Transport Layer):传输层负责在网络中的不同主机之间提供端到端的可靠传输。它使用TCP或UDP协议,为上层应用提供数据传输的服务。TCP协议提供可靠的、有序的数据传输,而UDP协议则提供不可靠的、无连接的数据传输。

  3. 互联网层 (Internet Layer):互联网层负责处理网络中的数据包的传输和路由。它使用IP协议,将数据包从源主机发送到目标主机,通过路由选择算法确定最佳传输路径,使数据能够在网络上正确地传递。

  4. 网络接口层 (Network Interface Layer):网络接口层负责处理与物理网络介质的通信,包括网卡、驱动程序和物理连接。它将上层的数据包转化为适合物理网络传输的格式,并将接收到的物理层数据包交给上层处理。

2.TCP与UDP协议

        TCP协议和UDP协议都是互联网协议族中的两种传输层协议。

先说这两个协议的区别:

        TCP协议:可靠,能反馈数据是否送达;低效,需要创建连接请求,然后才能传输数据。

        UDP协议:不可靠,不能反馈数据是否送达;高效,不要创建请求,直接散播数据。

       (1)TCP协议(传输控制协议)

        TCP协议是一种以固接连线为基础的协议,它能提供稳定的数据传送。TCP协议可以保证数据从一端传送到另一端,数据能确实送达,并且抵达的数据的排列顺序和送出时的顺序相同。

        因此,TCP协议适合数据传送可靠性要求高的场合。例如微信私聊,一方发送信息,另一方同时且完整地收到了对方的信息。TCP协议就是一对一传输数据,并且需要双方各自同意发送和接收。

       (2)UDP协议(用户数据报协议)

        UDP协议是无连接通信协议,不能保证数据的可靠传输,但可以同时对若干个对象发送数据,或者是接收若干个源的数据。UDP协议以独立发送数据包的方式进行。UDP协议就像一个广播喇叭,同时广播到挨家挨户,至于每户里是否家里有人收听到广播,就不能完全保证了。

        UDP协议适合一些对于数据传输准确性要求不高,但对传输速度和时效性要求高的网站。例如,在线影片观看,会议厅群发消息等。UDP协议就像一个喇叭,可以同时发送给多个对象,对象各自是否受到数据看自身的代码。

        一般防火墙和路由器会设置成不允许UDP数据包传输,防止未经授权的访问和攻击。因此若遇到UDP连接方面的问题,应该先确认所在网络是否允许UDP协议。   

三、端口与套接字

        (1)端口

        端口就是所有数据通过此处对内、对外传输到指定计算机上的连接(有物理上的)。

        网络程序设计中的端口(port)并非真实的物理端口,而是一个假想的接口。端口的设置名被规定为一个在0~65535之间的整数。HTTP服务一般使用80端口,FTP服务一般使用21端口。若一台计算机提供了HTTP、FTP等多种服务,那么客户机会通过不同的端口来确定连接到服务器上的哪项服务上。

        通常,0~1023之间的端口数应用于一些知名的网络服务和应用。用户的普通网络应用程序应该使用1024以上的端口数,依次来避免端口号与另一个应用或者所用端口冲突。

        (2)套接字

        网络程序中的套接字(Socket)用于将应用程序与端口连接起来。套接字也是一个假想的连接装置,就像连接电器和电线的插座。Java将套接字(Socket)抽象化为类,开发者只要创建Socket类对象,使用套接字即可允许不同的应用程序在不同的计算机之间进行数据传输和通信。

具体来说,套接字的作用包括:

  1. 实现网络通信:套接字提供了一种机制,使得不同计算机上的应用程序能够通过网络进行通信。它通过定义一套标准的接口,使得应用程序能够通过套接字发送和接收数据。

  2. 封装传输层协议:套接字封装了传输层协议(如TCP或UDP),提供了一种方便的编程接口,使得应用程序可以直接调用相关的套接字接口函数,而无需关注底层传输层协议的细节。

  3. 提供连接服务:通过套接字,应用程序可以建立连接并进行数据的可靠传输。TCP套接字提供了面向连接的服务,确保数据的有序和可靠传输;而UDP套接字则提供了无连接的服务,适用于实时性要求较高的场景。

  4. 支持多种应用层协议:套接字支持多种应用层协议,如HTTP、FTP、SMTP等。通过套接字,应用程序可以选择合适的应用层协议来进行数据传输。


总结

        以上就是对网络程序设计的简单概述,介绍了学习java设计网络程序的基础概念,为我们深入实践网络程序做一个小铺垫。有补充或者指正的内容,欢迎在评论区中留言。


http://www.ppmy.cn/news/1504720.html

相关文章

docker 发布geoserver服务添加字体

1. 创建容器时可直接挂载到系统字体库 2. 已发布的容器挂载字体目录 关闭docker服务 : systemctl stop docker.socket 修改config.v2.json :位置在 cd /var/lib/docker/containers/容器id 重新启动docker服务:systemctl start docker

SDXL总结

SDXL base部分的权重:https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/tree/main diffusers库中的SDXL代码pipelines: https://github.com/huggingface/diffusers/tree/main/src/diffusers/pipelines/stable_diffusion_xl 参考&…

【Wireshark 抓 CAN 总线】Wireshark 抓取 CAN 总线数据的实现思路

最近看到一个帖子 Wireshark 对接 Windows 系统命名管道,抓取数据 我突然想到一个很有意思的方式 你没看错 用 Wireshark 来抓取 CAN 总线数据 【其实 Wireshark 上有 CAN 总线的的解码器,不信你可以在表达式栏打 can 试下,是有这个解码器的】…

Python爬虫基础:爬取网页内容解析标题

当你需要从网页上获取数据并进行处理时,Python的BeautifulSoup和requests库是非常强大的工具。这些库可以帮助你发送HTTP请求,获取网页内容,并解析HTML以提取所需的信息。在这篇博客文章中,我们将详细介绍如何使用这些库从网页上获…

崆峒酥饼—旅游与访友的绝佳选择

当您踏上旅途,或是准备拜访亲朋好友,总在寻觅一份既能代表心意,又独具特色的礼物。而食家巷崆峒酥饼,无疑是您的不二之选。 崆峒酥饼,源自平凉的美食瑰宝,每一口都承载着浓厚的地方风情。它的外表金黄…

【Android】ContentProvider基本概念

ContentProvider Android权限机制详解 <manifest xmlns:android"http://schemas.android.com/apk/res/android"package"com.example.broadcasttest"> <uses-permission android:name"android.permission.RECEIVE_BOOT_COMPLETED" />…

亲子游戏 - 华为OD统一考试(D卷)

OD统一考试(D卷) 分值: 200分 题解: Java / Python / C++ 题目描述 宝宝和妈妈参加亲子游戏,在一个二维矩阵(N*N)的格子地图上,宝宝和妈妈抽签决定各自的位置,地图上每个格子有不同的糖果数量,部分格子有障碍物。 游戏规则是妈妈必须在最短的时间(每个单位时间只能走…

“常温”前端网站框架(四)-- 音乐播放器【附源码】

开篇&#xff08;请大家看完&#xff09;&#xff1a;此网站写给挚爱&#xff0c;后续页面还会慢慢更新&#xff0c;大家敬请期待~ ~ ~ 此前端框架&#xff0c;主要侧重于前端页面的视觉效果和交互体验。通过运用各种前端技术和创意&#xff0c;精心打造了一系列引人入胜的页面…