java网络编程基础——网络基础
java网络编程
网络编程基础
1、常用的网络拓扑结构:
星型网络、总线网络、环线网络、树形网络、星型环线网络
2、通信协议的组成
通信协议通常由3部分组成:
语义部分:用于决定通信双方对话类型
语法部分:用于决定通信双方对话格式
变换规则:用于决定通信双方的应答关系
3、OSI模型和TCP/IP模型
OSI:开放系统互联参考模型
应用层
表示层
会话层
传输层
网络层
数据链路层
TCP/IP:传输控制协议
应用层
传输层
网络层
物理数据链路层
4、IP地址和端口号
IP地址用于唯一的标识网络中的一个通信实体,这个通信实体即可以是一台主机,也可以是一台打印机,或者是路由器的某个端口。
(IPv4)逻辑地址的定义:
一共有32位二进制,分成4部分,每部分8位。
0000 0000 - 1111 1111 <-> 0 - 255 所以ip地址会写成例如:10.20.158.75这种形式
逻辑地址具有层次结构,分为网络地址和主机地址
为了标识不同规模的网络,将IPV4逻辑地址进行了分类:
A类:只有第一段表示网络地址,后面都表示主机地址
8位网络地址,24位主机地址,可以容纳2^24-2台主机(主机位全0为网络地址,全1为广播地址)
子网掩码:255.0.0.0
0 000 0001 - 0 111 1111 <-> 1 - 127
一共有127个A类地址,但127用于回环。所以有效的A类地址:1-126
B类:前两段表示网络地址,后两段表示主机地址
16位网络地址,16位主机地址,可以容纳2^16-2台主机(主机位全0为网络地址,全1为广播地址)
子网掩码:255.255.0.0
10 00 0001 - 10 11 1111 <-> 128 - 191
一共有64个B类地址(这只是从第一段来分类),真正B类地址有2^14个
C类:前三段表示网络地址,后一段表示主机地址
24位网络地址,8位主机地址,可以容纳2^8-2台主机(主机位全0为网络地址,全1为广播地址)
子网掩码:255.255.255.0
110 0 0001 - 110 1 1111 <->192 - 223
一共有32个C类地址(这只是从第一段来分类),真正的C类地址有2^21个
D类:1110 0000 - 1110 1111 <-> 224 - 239
E类:余下的都是E类
ICANN:国际互联网地址分配机构(注册域名和地址分配机构)
ICANN预留出了一部分地址,专门用于本地使用,不能用于连互联网,这类地址称为私有地址
私有地址:(作为原地址可以,目标地址不行,不能在互联网通信)
A类:10.0.0.0/8
B类:172.16.0.0/16 -172.31.0.0/16(16个B类网)
C类:192.168.0.0/24 -192.168.255.0/24(256个C类网)
IP地址用于唯一的标识网络中的一个通信实体,但一个通信实体可以有多个通信程序同时提供网络服务,此时还需要用到端口
端口是一个16位的整数,用于表示数据交给哪个通信程序处理。端口就是应用程序与外界交流的出入口,它是一种抽象的软件接口,包括一些数据结构和I/O(基本输入输出)缓冲区
不同的应用程序处理不同端口上的数据,端口号可以从0到65535。通常分为3类
1)公认端口:0 - 1023 ,他们紧密绑定一些特定的服务
2)注册端口:1024 - 49151 ,他们松散的绑定一些服务,应用程序通常应该使用这个范围内的端口
3)动态和/或私有端口:49152 - 65535 这些端口是应用程序使用的动态端口,应用程序一般不会主动使用这些端口
java网络编程基础——网络基础的更多相关文章
- 老师的blog整理 .网络编程部分 .网络编程部分 前端部分 django基础部分
老师的blog整理 .网络编程部分 .网络编程部分 前端部分 django基础部分 老师的blog整理 python基础部分: 宝哥blog: https://www.cnblogs.com/gu ...
- Python网络编程之网络基础
Python网络编程之网络基础 目录 Python网络编程之网络基础 1. 计算机网络发展 1.1. OSI七层模型 1.2. 七层模型传输数据过程 2. TCP/IP协议栈 2.1 TCP/IP和O ...
- UNIX环境高级编程——TCP/IP网络编程 常用网络信息检索函数
UNIX环境高级编程——TCP/IP网络编程 常用网络信息检索函数 gethostname() getppername() getsockname() gethostbyname() ...
- JAVA基础——网络编程之网络链接
一.网络编程基本概念 1.OSI与TCP/IP体系模型 2.IP和端口 解决了文章最开始提到的定位的问题. IP在互联网中能唯一标识一台计算机,是每一台计算机的唯一标识(身份证):网络编程是和远程计算 ...
- 网络编程入坑基础-BIO总结
IO总结 前提 参考资料: <Java I/O> -- 这本书没有翻译版,需要自己啃一下. <Java I/O>这本书主要介绍了IO和NIO的相关API使用,但是NIO部分并不 ...
- 老师的blog整理 .网络编程部分 .网络编程部分 前端部分 django基础部分
老师的blog整理 python基础部分: 宝哥blog: https://www.cnblogs.com/guobaoyuan/ 开哥blog: https://home.cnblogs.com/u ...
- 总结day23 ---- 网络编程,以及计算机基础概念
计算机网络的发展及基础网络概念 问题:网络到底是什么?计算机之间是如何通信的? 早期 : 联机 以太网 : 局域网与交换机 广播 主机之间“一对所有”的通讯模式,网络对其中每一台主机发出的信号都进行无 ...
- 网络编程中TCP基础巩固以及Linux打开的文件过多文件句柄的总结
1.TCP连接(短链接和长连接) 什么是TCP连接?TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的.可靠的.基于字节流的传输层通信协议. 当网络通信 ...
- UNIX网络编程——揭开网络编程常见API的面纱【上】
Linux网络编程API函数初步剖析 今天我们来分析一下前几篇博文中提到的网络编程中几个核心的API,探究一下当我们调用每个API时,内核中具体做了哪些准备和初始化工作. 1.socket(famil ...
- Python 网络编程之网络协议(未完待续)
一:网络编程从两大架构开始 1.网络开发的两大架构 c/s 架构 : client server B/S 架构 : Brower server (1)bs 和 cs 架构之间的关系? (2)哪一种 ...
随机推荐
- C语言代码区错误以及编译过程
C语言代码区错误 欲想了解C语言代码段会有如何错误,我们必须首先了解编译器是如何把C语言文本信息编译成为可以执行的机器码的. 背景介绍 测试使用的C语言代码 导入标准库,定义宏变量,定义结构体,重命名 ...
- 使用有道云笔记还是github写笔记的优缺点对比
有道云笔记的优点 在手机上编辑笔记,有道云的体验更好,建议:新建普通类型笔记而不是markdown笔记,因为md在手机上的编辑体验并不好 插入图片方便无需考虑图床 可以把笔记分享到社交平台(QQ,微信 ...
- 【NX二次开发】Block UI 线性尺寸
属性说明 常规 类型 描述 BlockID String 控件ID Enable Logical 是否可操作 Group Logical ...
- asp.net core 实现 face recognition 使用 tensorflowjs(源代码)
功能描述 上传照片文件名及是系统要识别标签或是照片的名称(人物标识) 提取照片脸部特征值(调用 facemesh模型) 保存特征值添加样本(调用 knnClassifier) 测试上传的图片是否识别正 ...
- 深度解读MRS IoTDB时序数据库的整体架构设计与实现
[本期推荐]华为云社区6月刊来了,新鲜出炉的Top10技术干货.重磅技术专题分享:还有毕业季闯关大挑战,华为云专家带你做好职业规划. 摘要:本文将会系统地为大家介绍MRS IoTDB的来龙去脉和功能特 ...
- JUL 日志框架
1.JUL 简介 JUL 全称 Java Util Logging,位于java.util.logging.Logger 包.它是 java 原生的日志框架,使用时无需另外引用第三方的类库,相对其他的 ...
- 怎样用好PS中的钢笔工具(附练习钢笔工具网站)
想要在PS中得心应手的的描绘出自己想要的线条(也就是路径),就需要对[钢笔工具]有一个充分的理解. [钢笔工具]绘出来的线条全部都是贝赛尔曲线,所以你在学习[钢笔工具]之前,要补习一下贝赛尔曲线的常识 ...
- 16、如何将安装在chrome上的插件(扩展程序)打包成".crx"文件
1.打开扩展程序: 2.打开开发者模式并选择要打包的插件: 3.打包扩展程序: (1) (2) (3)
- 重新整理 .net core 实践篇————网关中的身份签名认证[三十七]
前言 简单整理一下网关中的jwt,jwt用于授权认证的,其实关于认证授权这块https://www.cnblogs.com/aoximin/p/12268520.html 这个链接的时候就已经写了,当 ...
- 解决List遍历删除元素提示ConcurrentModificationException
JDK1.8提供新的API ===> removeIf public static void main(String[] args) { List<String> list = ...