别说了,我要学网络编程(一)

Midas Civil实战避坑指南:从建模报错到施工阶段分析 本文详细解析了Midas Civil在桥梁建模与施工阶段分析中的实战避坑技巧,涵盖从基础建模到高级边界条件设置的全流程。针对截面定义、节点创建、施工荷载区分等常见问题提供专业解决方案,帮助工程师避免计算误差,提升结构分析效率。特别强调施工阶段荷载与恒荷载的正确处理,以及弹性连接的合理应用。 阅读详情


最近在看关于网络编程的书籍,书中涉及到了很多关于网络的知识,对我这种非科班出身的人来说,这种书籍是我必须要学的呀,毕竟之前就落人家好几年的基础知识,这时候还不恶补一下?跟着我来恶补一下这个网络知识把。


640?wx_fmt=jpeg


网络概述


网络编程技术当前一种主流的编程技术,随着联网趋势的逐步增强以及网络应用程序的大量出现,所以在实际的开发中网络编程技术获得了大量的使用。


网络编程实质


网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输。按照计算机网络的定义,通过一定的物理设备将处于不同位置的计算机连接起来组成的网络,这个网络中包含的设备有:计算机、路由器、交换机等等。


路由器和交换机组成了核心的计算机网络,计算机只是这个网络上的节点以及控制等,通过光纤、网线等连接将设备连接起来,从而形成了一张巨大的计算机网络。


网络最主要的优势在于共享:共享设备和数据,现在共享设备最常见的是打印机,一个公司一般一个打印机即可,共享数据就是将大量的数据存储在一组机器中,其它的计算机通过网络访问这些数据,例如网站、银行服务器等等。


对于网络编程来说,最主要的是计算机和计算机之间的通信,这样首要的问题就是如何找到网络上的计算机呢?这就需要了解 IP 地址的概念。


关于IP地址就需要好好说道说道了!


IP地址



为了能够方便的识别网络上的每个设备,网络中的每个设备都会有一个唯一的数字标识,这个就是 IP 地址。在计算机网络中,现在命名 IP 地址的规定是 IPv4协议,该协议规定每个 IP 地址由 4 个 0-255 之间的数字组成,例如 10.0.120.34。


每个接入网络的计算机都拥有唯一的 IP 地址,这个 IP 地址可能是固定的,例如网络上各种各样的服务器,也可以是动态的,例如使用 ADSL 拨号上网的宽带用户,无论以何种方式获得或是否是固定的,每个计算机在联网以后都拥有一个唯一的合法 IP 地址,就像每个手机号码一样。

640?wx_fmt=png


但是由于 IP 地址不容易记忆,所以为了方便记忆,有创造了另外一个概念——域名(Domain Name),例如 sohu.com 等。一个 IP 地址可以对应多个域名,一个域名只能对应一个 IP 地址。


域名的概念可以类比手机中的通讯簿,由于手机号码不方便记忆,所以添加一个姓名标识号码,在实际拨打电话时可以选择该姓名,然后拨打即可。


在网络中传输的数据,全部是以 IP 地址作为地址标识,所以在实际传输数据以前需要将域名转换为 IP 地址,实现这种功能的服务器称之为 DNS 服务器


用更加简单直白的话来说就是域名解析。


例如当用户在浏览器输入域名时,浏览器首先请求 DNS 服务器,将域名转换为 IP 地址,然后将转换后的 IP 地址反馈给浏览器,然后再进行实际的数据传输。


一般情况DNS服务器正常运行的时候,我们用域名或者IP地址都能连接到网络中的设备,但是DNS服务器挂了的时候,你就会发现只能使用IP地址来访问该设备了,所以IP地址其实比域名更加的通用。


端口


其实端口比较好理解,你看哈,每家公司都有自己的前台总机,然后还有自己的座机,每次别人打电话进来的时候一般会打到总台的电话,然后再转分机,其实这个前台的总机就相当于是IP地址,而我们每个员工的分机号就是相当于端口了。


在同一个计算机中每个程序对应唯一的端口,这样一个计算机上就可以通过端口区分发送给每个端口的数据了,换句话说,也就是一个计算机上可以并发运行多个网络程序,而不会在互相之间产生干扰。在硬件上规定,端口的号码必须位于 0-65535 之间,每个端口唯一的对应一个网络程序,一个网络程序可以使用多个端口。


这样一个网络程序运行在一台计算上时,不管是客户端还是服务器,都是至少占用一个端口进行网络通讯。在接收数据时,首先发送给对应的计算机,然后计算机根据端口把数据转发给对应的程序。


其实这都是一些概念性的东西,没有什么技术含量,都是看个人理解的问题,我们来通过一些简单的小案例才能了解。


说了IP地址和端口之后,我们说一下网络通讯过程是什么样子的?


网络通讯


网络通讯基于“请求-响应”模型。


怎么来理解这个模型?前几天在刷剧暗杀者,挺好玩的一个悬疑搞笑剧,其中有一个警察审讯的镜头。


警察:姓名?	
	
嫌疑犯:XXX	
	
警察:性别	
	
嫌疑犯:自己看	
	
警察:年龄	
	
嫌疑犯:25	


其实这一问一答就是网络中的“请求-响应”模型;如果警察不开口问,嫌疑犯也不说话,这就更像“请求-响应”模型了,不请求,不响应。


在网络通讯中,第一次主动发起通讯的程序被称作客户端(Client)程序,简称客户端,而在第一次通讯中等待连接的程序被称作服务器端(Server)程序,简称服务器。


一旦通讯建立,则客户端和服务器端完全一样,没有本质的区别。


其实很容易就理解客户端和服务器端的,QQ,我们用的腾讯的,在我们这里就是客户端程序,而服务器端程序在腾讯那边,为大量的QQ用户服务,这种网络编程结构也成为客户端/服务器结构,C/S结构。


实在运行很多程序时,没有必要使用专用的客户端,而需要使用通用的客户端,例如浏览器,使用浏览器作为客户端的结构被称作浏览器/服务器结构,也叫做 Browser/Server 结构,简称为 B/S 结构。


是不是这C/S和B/S就很容易区分出来了。


协议


下面我在说一下这个网络编程中最重要的一点,也是最复杂的概念-----协议(Protocol)


按照前面的介绍,网络编程就是运行在不同计算机中两个程序之间的数据交换。在实际进行数据交换时,为了让接收端理解该数据,计算机比较笨,什么都不懂的,那么就需要规定该数据的格式,这个数据的格式就是协议。


其实协议用最简单的方式来理解一下,谍战大家看过把,地下党通过电台发送情报,在实际发报时,需要首先将需要发送的内容转换为电报编码,然后将电报编码发送出去,而接收端接收的是电报编码,如果需要理解电报的内容 则需要根据密码本翻译出该电报的内容。


这里的密码本就规定了一种数据格式,这种对于网络中传输的数据格式在网络编程中就被称作协议。


是不是这样就很通俗易懂了。


关键来了,我们怎么来编写协议格式呢?答案是随意。只要按照这种协议格式能够生成唯一的编码,按照该编码可以唯一的解析出发送数据的内容即可。也正因为各个网络程序之间协议格式的不同,所以才导致了客户端程序都是专用的结构。


在实际的网络程序编程中,最麻烦的内容不是数据的发送和接收,因为这个功能在几乎所有的程序语言中都提供了封装好的 API 进行调用,最麻烦的内容就是协议的设计以及协议的生产和解析,这个才是网络编程中最核心的内容。


这实际上就是网络编程的基础性的内容,其实很多时候这些东西都特别的枯燥,但是静下心来,会发现会对以后的学习会有很大很大的帮助。


说完了网络编程的基础要点,我们再来说一下这个网络通讯方式。


 网络通讯方式


在现有的网络中,网络通讯的方式主要有两种:


1. TCP(传输控制协议)方式 


2. UDP(用户数据报协议)方式 


我们用例子来区分一下这两个方式,大家使用手机时,向别人传递信息时有两种方式:拨打电话和发送短信。使用拨打电话的方式可以保证将信息传递给 别人,因为别人接听电话时本身就确认接收到了该信息。而发送短信的方式价格低廉,使用方便,但是接收人有可能接收不到。


就像是微信发送文字消息和微信发送视频通话一样的道理,在网络通讯中,TCP 方式就类似于拨打电话,使用该种方式进行网络通讯时,需要建立专门的虚拟连接,然后进行可靠的数据传输,如果数据发送失败,则客户端会自动重发该数据。而 UDP 方式就类似于发送短信,使用这种方式进行网络通讯时,不需要建立专门的虚拟连接,传输也不是很可靠,如果发送失败则客户端无法获得。


一般情况下:


  • 重要数据使用TCP方式进行传输;

  • 大量的非核心数据使用UDP方式进行传输;

  • 由于TCP方式需要建立专用的虚拟连接以及确认传输是否正确,所以使用 TCP 方式的速度稍微慢一些,而且传输时产生的数据量要比 UDP 稍微大一些。


关于网络编程的基础我先记录到这里,之后我会更新一些相关的系列来说这个网络编程的所有你想知道的事情。


我是懿,一个正在被打击还在努力前进的码农。欢迎大家关注我们的公众号,加入我们的知识星球,我们在知识星球中等着你的加入。


End


如有收获,请帮忙转发,您的鼓励是作者最大的动力!

640?wx_fmt=png


640?wx_fmt=jpeg

我是本周的小编「」,现在要隆重地告诉大家一个好消息,对于加入「Java极客技术」知识星球的同学提供基本的福利:


文章有疑问的地方可以提问,其他工作问题都可以提问出来,作者免费作答。

 https://t.zsxq.com/Y3fYny7


每周都有大牛分享一些面试题,和面试注意的知识点!

 https://t.zsxq.com/2bufE2v


每周由Java极客技术独家编制的设计模式与大家分享!

 https://t.zsxq.com/3bUNbEI


每两周还会分享一个话题,和大家一起成长!

 https://t.zsxq.com/BI6Unm2


还有Java极客技术团队亲自录制了一套 Spring Boot 视频,这套视频加密,加密后放到云盘上,下载链接加密之后,一机一码,每个星球的用户一个播放授权码。

 

我们做知识星球的目的和其他星主一样,就是为了帮助大家一起更好的成长,与高手拉近距离,减少差距,其实你也是高手!

640?wx_fmt=png640?wx_fmt=jpeg640?wx_fmt=jpeg640?wx_fmt=jpeg640?wx_fmt=jpeg

1000人,50元/每年,现在大约还剩400名额。

长按二维码


640?wx_fmt=png


640?wx_fmt=png



欢迎长按下图关注公众号Java极客技术,后台回复“资料”,获取作者独家秘制精品资料

640?wx_fmt=other

Java 极客技术公众号,是由一群热爱 Java 开发的技术人组建成立,专注分享原创、高质量的 Java 文章。如果您觉得我们的文章还不错,请帮忙赞赏、在看、转发支持,鼓励我们分享出更好的文章。



640?
ROS四旋翼无人机快速上手指南(3):工作环境文件框架与各功能包整体讲解 章节主要讲解无人机平台的控制文件架构和各个功能包组成和用法。 阅读详情

相关推荐

DolphinScheduler租户配置踩坑实录:手把手教你修复‘tenant not exists‘报错

本文深度解析DolphinScheduler的租户模型,并提供套从界面到数据库的系统性排查流程,手把手教你修复常见的'tenant not exists'报错。文章揭示了该错误的本质是用户与租户数据关联不致,并给出了通过UI或SQL更新的具体修复方案,同时分享了根因分析与预防措施,帮助用户从根本上理解和避免此类问题。

2w3e4r5t6y的博客 525

网络编程

网络编程 计算机网络 是指将地理位置不同的具有独立功能的多态计算机及其外部设备,通过通信线路连接起来,在网络操作系,网络管理软件及网络通信协议的管理和协调下管理和协调下.实现资源共享和信息传递的计算机系统. 网络编程 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换. 网络编程 网络模型概述 计算机网络之间以何种规则进行通信,就是网络模型研究问题。网络模型般是指OSI(Open S...

weixin_33778544的博客 226

Multisim实战:从8选1到32选1数据选择器的完整搭建指南(附常见问题解决)

本文提供了份详尽的Multisim实战指南,手把手教你从基础的8选1数据选择器开始,逐步级联搭建16选1乃至32选1数据选择器。文章深入剖析了级联的核心逻辑、片选方案以及使用译码器的专业方法,并附带了电源连接、输出冲突、信号毛刺等常见问题的诊断与解决技巧,帮助电子工程生和爱好者扎实掌握数字电路的系统设计与仿真调试。

dd012的博客 708

这份书单会告诉你,Java网络编程其实很重要

​ Java工程师往往容易忽视的块知识点,其实就是Java网络编程,为什么呢,因为如果我想写个Java Web项目,我只要用SSM就可以轻松搞定,写好我们的controller、service和dao就可以了,也就是只需要关心业务逻辑,不需要关心前端请求的路由、甚至是后端的负载均衡和网络请求处理,因为这些东西很多时候都被Nginx和Tomcat给吃掉了,Nginx帮我们做好了负载均衡,Tomcat则帮我们完成TCP连接的建立,HTTP请求的处理,把所有复杂的技术细节都给屏蔽了。 不过随着技术发...

keocce的博客 1546

Java网络编程:概述--快速入门

网络编程是指通过计算机网络实现程序之间的通信。在Java中,网络编程通常涉及到数据的传输、通信协议的使用以及与网络相关的各种操作。

qq_35763697的博客 2030

【Java 基础篇】Java网络编程详解

本文详细介绍了Java网络编程的概念、原理和常用技术。网络编程项重要的技术,在现代互联网时代扮演着重要的角色。通过习和掌握Java网络编程,开发人员可以构建各种网络应用,实现客户端-服务器通信、分布式系统等功能。希望本文对你理解和应用Java网络编程有所帮助!

繁依Fanyi的博客 3693

其实在Java SE中,仅需要习这2个章节就够了!

对Java整个体系的习,Java SE的核心只有这二个,最多花15个小时。然后Java SE基础,等到真正需要的时候再,不仅的开心,而且效果好。文件与IO流,多线程:这块真正重要的是,你得有操作系统基础,对操作系统原理有基础认知。他不仅是Java SE其他知识点的基础,也是后面Java Web、Java EE最核心的基础。这里面的基础不是简单的意思,而是构建的意思。更加重要的是,那些知识点,只是非常表面的东西。这块真正重要的从来不是这个,而是你得对计算机的CPU、寄存器、内存有很好的认识。

weixin_50142696的博客 389

python网络编程什么_python网络编程习《

最近,刚实习完,很喜欢实验楼,但是自己的方向仍然不能确定,自己觉得可选择的空间很大,尽管已经是大四的人了,想到别人都在忙着买职业装,买高跟鞋面试,习化妆什么的,看看自己,反而开始慢慢关注运动,食疗以及护肤了,哈哈,程序员就是酱紫,身体是革命的本钱。现在的方向至少是确定了,数据分析,但是图像处理这个项目既然当初选择当负责人,现在也要负责啊;那么目前网络编程,也是因为长希望在“wind”的登陆...

weixin_39960793的博客 166

与你Netty()-Java网络编程

内容来自《深入分析Java Web技术内幕》和《Netty实战》两本书的个人总结,感谢二位作者! 、Java Socket的工作机制 Socket ,它描述计算机之间完成相互通信的种抽象功能,可以把Socket比作两个城市之间的交通工具,有了它,就可以在城市之间来回穿梭。交通工具有多种,每种交通工具也有相应的交通规则。Socket也样,也有多种。大部门情况下我们使用的都是基于TCP/IP的流套接字,它是种稳定的通信协议。 主机应用程序相互通信,需要通过Socket建立...

孟孟的博客 1015

跟着webbenchC++网络编程

跟着webbenchC++网络编程) ​ 最近看了c++网络编程的基础知识,现在结合些项目来深入习。由浅入深,先从网络测试工具webbench开始习。 ​ webbech的源码,主要是两个文件,个是socket.c,个是webbench.c。先从简单的socket.c开始。socket.c的代码如下: /* $Id: socket.c 1.1 1995/01/01 07:11:14 cthuang Exp $ * * This module has been modified by Ra

superhoner的博客 365

网络编程前的计算机知识普及——图解乾坤

】、网络编程前的计算机知识普及 前言 可能有朋友会好奇,前两天刚发布了数据结构,现在突然又发布网络编程,那此刻的我到底在些神马?哈哈,我这期的目标就是数据结构和网络编程,至于的先后,我想你应该猜到了,没错,两不误,我就是要同步进行,世上无难事,只要肯攀登,趁我习热情依旧高涨,习就是我最大的乐趣。在网络编程之前,我觉得有必要对计算机的硬件、软件、操作系统做些简单的了...

泰斗贤若如的博客 123

Java网络编程笔记()——张洪波《零基础轻松java》

目录 简述 1.1网络基础 背景 TCP/IP网络模型 IP地址与InetAddress类 套接字 1.2 UDP协议网络程序 概述 DatagramPacket类 主要构造方法 常用方法 DatagramSocket类 主要构造方法 常用方法 创建UDP服务器端程序 示例 创建UDP客户端程序 简述 与网络编程有关的基本API位于Java.NET包中,其中包含基本的网络编程实现,该包是网络编程的基础。Java.NET包既包含基本的网络编程类,也包含封装后专门处理..

小缘同学的博客 1165

脑残式网络编程入门():跟着动画来TCP三次握手和四次挥手

1、引言 网络编程中TCP协议的三次握手和四次挥手的问题,在面试中是最为常见的知识点之。很多读者都知道“三次”和“四次”,但是如果问深入点,他们往往都无法作出准确回答。 本篇文章尝试使用动画图片的方式,来对这个知识点进行“脑残式”讲解(哈哈),期望读者们可以更加简单、直观地理解TCP网络通信交互的本质。 ...

weixin_33845881的博客 1017

07_网络编程基础

/ OSI七层模型 vs TCP/IP四层模型 // 应用层 -> HTTP, FTP, SMTP // 传输层 -> TCP, UDP // 网络层 -> IP, ICMP // 链路层 -> 以太网, WiFi // Go语言的网络编程优势 // - 标准库支持丰富 // - 并发处理能力强 // - 跨平台兼容性好HTTP是应用层协议,适合Web应用开发TCP提供可靠连接,适合需要可靠传输的场景UDP提供无连接服务,适合实时性要求高的场景网络编程需要考虑并发、错误处理和安全性。

lpfasd123的博客 174

小时网络编程

网络通讯 数据传输三要素: 源、目的、长度 服务器: 被动的相应请求。 客户端: 主动的发起请求。 UDP和TCP: UDP传输,如传输视频,某帧数据丢失关系也不大,是无连接的传输;但是TCP主要是传输文件或者控制命令这些每帧都很重要的信息,是可靠的有连接的传输。 TCP 文件读写: fd=open(“文件名”); read(fd,buf,len); write(fd,buf,len); 服务...

weixin_40474683的博客 281

什么是网络编程

1.什么是网络、计算机网络的构成是什么?   在计算领域中,网络是传输信息、接受、共享的虚拟的平台。   通过它可以把各个点、面、体的信息联系到起,从而实现这些资源的共享。  网络是人类发展史上最重要的发明,提高了人类和科技的个发展。 2.什么是网络编程网络编程从大的方面就是说对信息的发送接收。 通过操作相应API调度计算机资源硬件,并且利用管道(网线)进行数据交互的过程。...

折腾java的博客 5万+

网络编程怎么

1.网络编程怎么?我接手了前辈留下来的业务流程调度软件,需要和多台服务器上十多个软件进行网络通信,进行作业时间表的定时分发,设备和软件状态实时监视。 使用技术包括:消息中间件,多线程(包括定时器),网络通信(nio),公司自己研发的通信框架。 对于多线程和网络通信这块的基础非常薄弱,仅仅停留在Java基础入门的认知上。所以,决心更加深入的了解网络通信和多线程这块,后续继续习Java虚拟机和并

lengarry的博客 3202

【Java】网络编程,你废了吗

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

一以贯之的努力 不得懈怠的人生 479

五分钟Java:如何习Java面试必考的网络编程

原创声明 本文作者:黄小斜 转载请务必在文章开头注明出处和作者。 本文思维导图 简介 Java作为门后端语言,对于网络编程的支持是必不可少的,但是,作为个经常CRUD的Java工程师,很多时候都不需要接触到网络编程,自然而然地对这个东西不那么重视了,毕竟,即使像是JVM虚拟机,Java多线程,在平时工作的时候还会用到些,但是对于网络编程,除非你做的东西确实是需要自己写通讯服务代码的,比如...

Java技术江湖 1742

网络编程入门()

本文从网络编程的基础概念出发,详细介绍了Java、Python和C语言中的网络编程实战案例。内容包括TCP和UDP通信的实现、HTTP请求的发送与接收、原始套接字的使用以及简单的Web服务创建。文章还提供了常见问题的解决方案,如处理网络超时、大数据传输和多客户端并发。最后,总结了网络编程的核心知识点,并建议深入习TCP/IP协议栈、NIO和异步编程,以及探索高级网络框架。

2401_82505179的博客 1538
上一篇: Java Grammar:数据类型
下一篇: ibatis 核心原理解析,年薪70万在线教你!
javageektech
博客等级 码龄7年 299粉丝 433原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值