JavaEE 网络编程基础知识

IP地址

概念
ip地址类似于身份证 用于识别网络主机 或者其他网络设备(例如路由器)的网络地址 简单来说IP地址用于定位主机的网络地址

IP地址是一个32位的二进制数 通常被分为4个 8位二进制数 (4个字节)
例如:01100100.00000100.00000101.00000110(一个ip地址)
通常可以用点分十进制表示 例如a.b.c.d(都是0~255之间的十进制整数) 例如上述ip地址为
100.4.5.6

环回ip(loop back)

127.*的IP地址用于本机环回测试 通常是127.0.0.1

本机环回主要用于本机到本机的网络通信 因为系统内部为了性能 不会使用网络的方式传输 对于开发网络通信的程序
常见的开发方式是本机到本机的网络通信

端口号

概念 在网络通信中 IP地址解决了网络通信时 定位网络主机的问题 但是存在一个问题 传输到目的主机后 由那个进程接收这个数据? 这就是需要端口号来标识

在网络通信中,IP地址用于标识主机网络地址,端口号可以标识主机中发送数据、接收数据的进程。简单说:端口号用于定位主机中的进程。

端口号是0~65535范围的数字,在网络通信中,进程可以通过绑定一个端口号,来发送及接收网络数据

注意:
两个不同进程 不能绑定一个同一个端口号 但是一个进程可以绑定多个端口号

认识协议

有了IP地址和端口号,可以定位到网络中唯一的一个进程,但还存在一个问题,网络通信是基于二进制0/1数据来传输,如何告诉对方发送的数据是什么样的呢?
网络通信传输的数据类型可能有多种:图片,视频,文本等。同一个类型的数据,格式可能也不同,如发送一个文本字符串“你好!”:如何标识发送的数据是文本类型,及文本的编码格式呢?
基于网络数据传输,需要使用协议来规定双方的数据格式。

概念:
协议 网络协议 网络协议是网络通信(网络传输) 经过所以网络设备都必须共同遵守约定 规则 例如建立连接 互相识别 只有遵守约定计算机才能通信交流 通常三要素组成:

  1. 语法: 数据与控制信息的结构或格式
  2. 语义: 需要发出什么控制信息,以及对应做出的响应
  3. 时序: 时间实现的顺序

协议(protocol)最终体现为在网络上传输的数据包的格式。

五元组

在TCP/IP协议中,用五元组来识别一个网络通信:

  1. 源IP: 标识源主机
  2. 源端口号:标识源主机中该次通信发送数据的进程
  3. 目的IP:标识目的主机
  4. 目的端口号:标识目的主机中该次通信接收数据的进程
  5. 协议号:标识发送进程和接收进程双方约定的数据格式

协议分层

对于网络协议,往往分成几个层次定义

OSI七层模型

OSI 七层网络模型是一个逻辑上的定义和规范:把网络从逻辑上分为了7层

分层名称功能每层功能描述
应用层针对特定应用的协议电子邮件 电子邮件协议 远程登录 远程登陆协议 文件传输 文件传输协议
表示层设备固有数据格式和网络标准数据格式的转换接收不同标识形式的信息,如文字流 图像 声音等
会话层通信管理建立和断开通信连接(数据流动的逻辑通路)管理传输层以下的分层何时建立连接,何时断开连接以及保持多久的连接
传输层管理两个节点之间的数据传输,负责可靠传输是否有数据丢失
网络层地址管理与路由选择经过哪个路由器传递到目的地址
数据链路层互连设备之间传送和识别数据帧数据帧与比特流之间的转换
物理层以0、1代表电压的高低 灯光的闪灭界定连接器和网线的规格比特流与电子信号直接按的转换 连接器与网线的规格

TCP/IP模型

OSI七层模型既复杂又不实用: 所以OSI七层模型没有实现
实际组建网络 是以TCP/IP五层模型来实现的

分层名称功能
应用层负责应用程序间沟通,如简单的电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等
传输层负责两台主机之间的数据传输 如传输控制协议(TCP) 能够确保数据可靠的从源主机发送到目标主机
网络层负责地址管理和路由选择 例如在IP协议中 通过IP地址来标识一台主机 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由) 路由器(Router)工作在网路层
数据链路层负责设备之间的数据帧的传送和识别。例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作。
物理层负责光/电信号的传递方式。比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤,现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等。集线器(Hub)工作在物理层。

封装和分用

不同的协议层对数据包有不同的称谓 在传输层叫做段(segment) 在网络层叫做数据报(datagram) 在链路层叫做帧(feame)
应用层数据通过协议栈发到网络上时 每层协议都要加上一个数据首部(header) 称为封装(Encapsulation)
首部信息中包含了一些类似于首部长度 载荷(payload)长度 上层协议的信息
数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应的首部,根据首部中 的 “上层协议字段” 将数据交给对应的上层协议处理。

例如:
A把消息通过QQ发送给B

  1. 应用层
    QQ应用程序 从输入框中获取要输入的消息构造应用层数据报(根据应用层协议)
    例如发出的信息是 “你好”
    构造应用层数据报就是按照一定的格式进行字符串拼接
    在这里插入图片描述
    应用程序 就会调用传输层提供的接口 把上述数据交给传输层进行处理

  2. 传输层 传输层的协议很多 主要有TCP 和UDP 此处假设使用UDP上面把数据从应用层传到了传输层 交给了UDP 于是UDP协议就要按照自己的协议格式 生成一个UDP数据报
    在这里插入图片描述
    UDP不关心应用层数据源 里面的内容只是把应用层数据当作一个字符串构造出一个UDP数据报
    此时传输层进一步把构造好的UDP数据报交给网络层

  3. 网络层
    网络层最主要的协议是IP协议 IP协议也会根据自己的格式来构造出IP数据报
    在这里插入图片描述
    IP协议同样不关心载荷内容 将其当成一个字符串 在这个基础上拼接一个IP报头
    接下来 还要把数据传输给链路层

  4. 数据链路层 以太网
    以太网 会针对IP数据报 进一步的封装
    再添加上数据头和数据尾
    在这里插入图片描述
    通过同样的步骤交给物理层

  5. 物理层
    硬件设备网卡
    在这里插入图片描述
    硬件设备就需要对上数据进行转化

接收放的情况就是(主机B)
对上面内容的反向拆解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值