JavaSe·网络编程篇(一) 网络编程入门


1. 软件结构

  • C/S结构:全称为Client/Server结构,是指客户端和服务器结构。常见程序有QQ、百度网盘等软件

  • B/S结构 :全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。

两种架构各有优势,但是无论哪种架构,都离不开网络的支持。网络编程,就是在一定的协议下,实现两台计算机的通信的程序。

2. 网络通信协议

  • 网络通信协议:通信协议是对计算机必须遵守的规则,只有遵守这些规则,计算机之间才能进行通信。这就好比在道路中行驶的汽车一定要遵守交通规则一样,协议中对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守,最终完成数据交换。

  • TCP/IP协议: 传输控制协议/因特网互联协议( Transmission Control Protocol/Internet Protocol),是Internet最基本、最广泛的协议。它定义了计算机如何连入因特网,以及数据如何在它们之间传输的标准。它的内部包含一系列的用于处理数据通信的协议,并采用了4层的分层模型,每一层都呼叫它的下一层所提供的协议来完成自己的需求。

3. 协议分类

通信的协议还是比较复杂的, java.net 包中包含的类和接口,它们提供低层次的通信细节。我们可以直接使用这些类和接口,来专注于网络程序开发,而不用考虑通信的细节。

3.1 TCP

传输控制协议 (Transmission Control Protocol)。TCP协议是面向连接的通信协议,即传输数据之前,在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输。

  • 三次握手:TCP协议中,在发送数据的准备阶段,客户端与服务器之间的三次交互,以保证连接的可靠。

第一次握手,客户端向服务器端发出连接请求,等待服务器确认。
第二次握手,服务器端向客户端回送一个响应,通知客户端收到了连接请求。
第三次握手,客户端再次向服务器端发送确认信息,确认连接。

完成三次握手,连接建立后,客户端和服务器就可以开始进行数据传输了。由于这种面向连接的特性,TCP协议可以保证传输数据的安全,所以应用十分广泛,例如下载文件、浏览网页等。

UDP

用户数据报协议(User Datagram Protocol)。UDP协议是一个面向无连接的协议。传输数据时,不需要建立连接,不管对方端服务是否启动,直接将数据、数据源和目的地都封装在数据包中,直接发送。每个数据包的大小限制在64k以内。它是不可靠协议,因为无连接,所以传输速度快,但是容易丢失数据。日常应用中,例如视频会议、QQ聊天等。

4. 网络编程三要素

4.1 协议

协议:计算机网络通信必须遵守的规则,已经介绍过了,不再赘述

4.2 IP地址

IP地址:指互联网协议地址(Internet Protocol Address),俗称IP。IP地址用来给一个网络中的计算机设备做唯一的编号。假如我们把“个人电脑”比作“一台电话”的话,那么“IP地址”就相当于“电话号码”

IP地址分类

  • IPv4:是一个32位的二进制数,通常被分为4个字节,表示成 a.b.c.d 的形式,例如 192.168.65.100 。其中a、b、c、d都是0~255之间的十进制整数,那么最多可以表示42亿个。

  • IPv6:由于互联网的蓬勃发展,IP地址的需求量愈来愈大,但是网络地址资源有限,使得IP的分配越发紧张。有资料显示,全球IPv4地址在2011年2月分配完毕。

    为了扩大地址空间,拟通过IPv6重新定义地址空间,采用128位地址长度,每16个字节一组,分成8组十六进制数,表示成 ABCD:EF01:2345:6789:ABCD:EF01:2345:6789 ,号称可以为全世界的每一粒沙子编上一个网址,这样就解决了网络地址资源数量不够的问题。

常用命令

  • 查看本机IP地址,在控制台输入:

ipconfig

  • 检查网络是否连通,在控制台输入:

ping 空格 IP地址

特殊的IP地址

本机IP地址: 127.0.0.1 、 localhost

4.3 端口号

网络的通信,本质上是两个进程(应用程序)的通信

如果说IP地址可以唯一标识网络中的设备,那么端口号就可以唯一标识设备中的进程(应用程序)了

  • 端口号:用两个字节表示的整数,它的取值范围是0~65535。其中,0~1023之间的端口号用于一些知名的网络服务和应用,普通的应用程序需要使用1024以上的端口号。如果端口号被另外一个服务或应用所占用,会导致当前程序启动失败。

利用 协议 + IP地址 + 端口号 三元组合,就可以标识网络中的进程了,那么进程间的通信就可以利用这个标识与其它进程进行交互

【JavaSe】网络编程篇(一) 网络编程入门相关推荐

  1. Linux网络编程篇之ICMP协议分析及ping程序实现

    Linux网络编程系列: Linux网络编程篇之Socket编程预备知识 Linux网络编程篇之TCP协议分析及聊天室功能实现 如果对Linux网络编程,对socket通信不是太清楚的同学,强烈推荐看 ...

  2. C++教程网之Linux网络编程视频 Unix网络编程视频

    教程非常不错,价值280元,绝对是干货 Linux网络编程(总共41集) 讲解Linux网络编程知识,分以下四个篇章. Linux网络编程之TCP/IP基础篇 Linux网络编程之socket编程篇 ...

  3. 零基础学C++——黑马程序员课程笔记(C++核心编程篇)

    封面来自互联网侵删 视频地址:点击访问 (我这里开发工具选用VSstudio) 此笔记有三个系列: C++基础语法入门篇 点击查看 C++核心编程篇 C++提高编程篇 本阶段主要针对C++面向对象编程 ...

  4. 【C++核心编程篇】

    C++核心编程篇 C++核心编程 1 内存分区模型 1.1 程序运行前 1.2 程序运行后 1.3 new操作符 2 引用 2.1 引用的基本使用 2.2 引用注意事项 2.3 引用做函数参数 2.4 ...

  5. Python3 与 C# 网络编程之~ 网络基础篇

    最新版本查看:https://www.cnblogs.com/dotnetcrazy/p/9919202.html 入门篇 官方文档:https://docs.python.org/3/library ...

  6. Java核心类库篇8——网络编程

    Java核心类库篇8--网络编程 1.七层网络模型 OSI(Open System Interconnect),即开放式系统互联,是ISO(国际标准化组织)组织在1985 年研究的网络互连模型. 当发 ...

  7. 菜鸟学习笔记:Java提升篇9(网络1——网络基础、Java网络编程)

    菜鸟学习笔记:Java提升篇9(网络1--网络基础.Java网络编程) 网络基础 什么是计算机网络 OS七层模型 Java网络编程 InetAddress InetSocketAddress URL类 ...

  8. 【Linux】网络篇二--TCP编程

    网络篇二--TCP编程 一.TCP编程实现 1.编程步骤 2.socket函数 3.bind函数 4.地址转换函数 5.listen函数 6.accept函数 7.connect函数 8.send函数 ...

  9. Java基础篇:网络编程

    文章目录 概述 通信要素之一:IP和端口号 通信要素之二:网络协议 TCP网络编程 UDP网络编程 URL编程 总结 概述 Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支 ...

最新文章

  1. 技术文:微信小程序和服务器通信-WebSocket
  2. 在linux配置jdk教程,Linux中JDK安装配置教程
  3. vgg16卷积层的计算量_深度学习_经典网络_VGG16和ResNet152哪个参数量更多
  4. 处理局域网网速变慢问题的几个思路
  5. C#如何反射出委托的签名,如何使用反射调用委托
  6. JAVA中for循环写杨辉三角_java使用for循环输出杨辉三角
  7. centos rpm安装zabbix
  8. 解决phpmailer可以在windows下面发送成功, 在linux下面失败的问题
  9. C# list删除 另外list里面的元素_[Python]列表(list)操作
  10. LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏的解决方案
  11. 基于词典的情感分析实验
  12. shape from shading
  13. CIM概念和总计架构
  14. mapinfo二次开发之:MapX和MapXtreme区别
  15. THINKPAD X250 加SSD安装WIN10 BIOS设置
  16. 6款数据库管理工具推荐,设计简单、功能丰富,还与阿里云兼容哦!
  17. 珠海网站建设价格是多少
  18. Logback - SiftingAppender
  19. Storm之——流组件简单串行编程实践
  20. python使用KNeighborsClassifier出现FutureWarning: Unlike other reduction functions (e.g. `skew`, `kurtosi

热门文章

  1. 17K薪资要什么水平?来看看95后测试工程师的面试全过程…
  2. 荣耀系列手机耗电优化图解
  3. 微信4.2版本雷锋网抢先独家评测 支持视频和语音通话
  4. 中国水溶性肥料市场趋势报告、技术动态创新及市场预测
  5. 阿里云备案不要穿红色和蓝色的衣服!
  6. 装系统遇到UEFI的引导
  7. 更新win11网络卡顿浏览器网速慢
  8. python安装bs4几种方法_Python安装Bs4的多种方法
  9. 全球科技公司2019年终市值排名:阿里成亚洲一哥;苹果等接洽运营商,或出资建美国第四张5G网;Intel新独显细节曝光……...
  10. Java 并发编程解析 | 如何正确理解Java领域中的锁机制,我们一般需要掌握哪些理论知识?