首页 > 其他 > 详细

详解 网络编程

时间:2020-03-05 11:59:56      阅读:77      评论:0      收藏:0      [点我收藏+]

网络,对于现代人来讲,是一个家喻户晓的名词
像我们玩联网游戏、与他人聊天软件上聊天... ...都是依靠网络编程技术实现的
那么,在本篇博文中,右转哥来带你深究网络的本质:



网络编程

在谈及网络编程之前,本人先来讲解下 什么是计算机网络

计算机网络

是指将地理位置不同具有独立功能多台计算机及其外部设备
通过通信线路连接起来,
网络操作系统网络管理软件网络通信协议的管理和协调下,
实现资源共享信息传递的计算机系统

那么,网络编程是什么呢

网络编程

就是用来实现网络互连不同计算机运行的程序间可以进行数据交换


那么,本人再来介绍下网络模型

网络模型:

概述

概述
计算机网络之间以何种规则进行通信,就是网络模型研究问题。

网络模型一般有两种划分方法:

  1. OSI(Open System Interconnection开放系统互连)七层参考模型
  2. TCP/IP 四层参考模型
    主机至 网络层(物理层 , 数据链路层) , 网际层 , 传输层 , 应用层(应用层 , 表示层 , 会话层)

下面,本人来通过一张图来展示下 这两种划分的区别与联系
技术分享图片

从上图中,我们能够看到:
其实第二种分法,就是将第一种分法的几层进行了合并
那么,现在,本人就来讲解下这7层的功能

网络模型7层概述

  1. 物理层
    主要定义物理设备标准
    如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等
    它的主要作用是传输比特流
    (就是由1、0转化为电流强弱来进行传输,到达目的地后在转化为1、0)
    这一层的数据叫做比特
    ---
  2. 数据链路层
    主要将从物理层接收的数据进行MAC地址(网卡的地址)的封装与解封装
    在这一层工作的设备是交换机,数据通过交换机来传输
    常把这一层的数据叫做
    ---
  3. 网络层
    主要将从下层接收到的数据进行IP地址(例192.168.0.1)的封装与解封装
    在这一层工作的设备是路由器
    常把这一层的数据叫做数据包
    ---
  4. 传输层
    定义了一些传输数据的协议端口号
    如:
    TCP传输控制协议:
    传输效率低可靠性强,用于传输可靠性要求高数据量大的数据)
    UDP用户数据报协议:
    与TCP特性恰恰相反,用于传输可靠性要求不高,数据量小的数据,如QQ聊天数据就是通过这种方式传输的)
    主要是将从下层接收的数据进行分段传输,到达目的地址后再进行重组
    常常把这一层数据叫做
    ---
  5. 会话层
    通过传输层(端口号:传输端口与接收端口)建立数据传输的通路
    主要在 系统之间 发起会话 或者 接受会话请求
    (设备之间需要互相认识可以是IP也可以是MAC或者是主机名)
    ---
  6. 表示层
    主要是进行对接收的数据进行解释加密解密压缩解压缩
    也就是把 计算机能够识别的东西 转换成 人能够能识别的东西
    (如图片、声音等)
    ---
  7. 应用层
    主要是一些终端的应用
    比如说FTP(各种文件下载),WEB(IE浏览),QQ之类的
    (可以把它理解成我们在电脑屏幕上可以看到的东西.就是终端应用)

那么,现在,本人来通过一张图展示下这7层的相互调用关系:
技术分享图片


那么,现在,本人再来讲解以下 网络三要素

网络三要素:

概述

  • IP地址:
    InetAddress: 网络中设备的标识,不易记忆,可用主机名
  • 端口号:
    用于标识进程的逻辑地址不同进程的标识
  • 传输协议:
    通讯的规则常见协议:TCP,UDP

那么,首先,本人来讲解下 三要素中的 IP:

IP:

概述:

所谓IP地址就是给每个连接在Internet上的主机分配的一个32bit地址

IP地址的组成:

IP地址 = 网络地址 + 主机地址


A类 IP地址:
第一段号码网络地址剩下的三段号码为本地计算机的号码
B类 IP地址:
前二段号码网络地址剩下的二段号码为本地计算机的号码
C类 IP地址:
前三段号码网络地址剩下的一段号码为本地计算机的号码

IP地址分类:

A类 —— 1.0.0.1---127.255.255.254:

  1. 10.x.x.x私有地址
    (私有地址就是在互联网上不使用,而被用在局域网络中的地址)
  2. 127.x.x.x保留地址,用做循环测试用的。

B类 —— 128.0.0.1---191.255.255.254 (172.16.0.0 --- 172.31.255.255私有地址
C类 —— 192.0.0.1---223.255.255.254 (192.168.x.x私有地址
D类 —— 224.0.0.1---239.255.255.254
E类 —— 240.0.0.1---247.255.255.254

那么,本人再为同学们做一下课外小拓展

  • 特殊地址 :
  1. 127.0.0.1 —— 回环地址,可用于测试本机的网络是否有问题
  2. xxx.xxx.xxx.255 —— 广播地址
  • 相关DOS命令 :
  1. ping -a x.x.x.x —— 获取x.x.x.x的主机名
  2. ping 127.0.0.1 —— 测试本机的网络是否有问题
  3. ipconfig —— 查看本机IP地址
  4. ipconfig -all —— 获取本地IP,主机名,MAC地址
  5. hostname —— 获取主机名
  6. net view —— 获取局域网中的所有主机名
  7. arp -a —— 获取本局域网中的所有IP地址和物理地址
  8. nbtstat -a 主机名 —— 获取MAC地址

其实,对于IP,Java中专门设有一个类,来描述它 —— InetAddress类;

InetAddress类:

概述

为了方便我们对IP地址获取操作
java提供了一个类InetAddress 供我们使用
此类表示互联网协议 (IP) 地址

常用API

  • public static InetAddress getByName(String host):
    根据名称获取 IP地址
  • public String getHostAddress():
    获取IP
  • public String getHostName():
    获取主机名
  • getLocalHost():
    获取本地IP地址

(至于上述API,本人就不在此处展示了,本人将在下文中反复用到)


那么,本人再来讲解下其余两个要素 —— 端口和协议

端口:

端口 主要分为两类:

  1. 物理端口 —— 网卡口
  2. 逻辑端口 —— 一般所提及的端口指的就是逻辑端口
    a:每个网络程序都会有一个逻辑端口
    b:用于标识进程的逻辑地址不同进程的标识
    c:有效端口0 ~ 65535(两个字节),其中0~1023系统使用保留端口

协议:

本人在上文讲解网络模型的时候,提到过:协议主要分为两种 —— UDPTCP

  • UDP
    数据源目的 封装成 数据包不需要建立连接
    每个数据报的大小在限制在64k内
    因无连接,是不可靠协议
    不需要建立连接速度快
  • TCP
    建立连接,形成传输数据的通道
    在连接中进行大数据量传输
    需要连接所以是可靠协议
    必须建立连接效率会稍低

其实,网络编程,在坊间,还有一种称呼 —— Socket编程
那么,现在,本人来讲解下所谓的 Socket

Socket:

概述

Socket = IP + 端口号
网络上具有唯一标识的IP地址端口号组合在一起,
才能构成唯一能识别的标识符套接字

原理机制

通信的两端都有Socket
网络通信其实就是Socket间的通信
数据在两个Socket间通过IO传输

其实,Socket有两种分类

Socket的分类

  1. 遵循UDP协议实现的 DatagramSocket
  2. 遵循TCP协议实现的 ServerSocket(服务端Socket)Socket(客户端Socket)

那么,接下来,本人就对这两种Socket进行下讲解:

首先是 DatagramSocket

DatagramSocket:

请观看本人博文 —— 《详解 DatagramSocket类》


接下来是 ServerSocket与Socket

ServerSocket与Socket:

请观看本人博文 —— 《详解 ServerSocket与Socket类》


详解 网络编程

原文:https://www.cnblogs.com/codderYouzg/p/12419011.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!