网络原理之初识

上一篇:Java基础IO

1、 网络出现的目的:实现数据在多个设备之间交换。

2、 网络上常见的设备:
组网用的设备:集线器,交换集;
联网用的设备:路由器

3、交换机
结点在硬件层面上是如何交换数据的?
交换机最底层的数据(物理上的)发送,数据是被发送给所有结点的;
因为局域网内的数据是发给全部结点的,所以交换只能起到局域网组网的作用。

4、 路由器
路由器是联网用的,工作在局域网和局域网之间交换数据的。
路由器划分局域网,工作在网络层。

5、协议
所谓协议就是一种约定,一种游戏规则;
协议标准:UTF-8是美国人制定的

6、 网络分层:
分层的好处:实现了专业人的做专业的事——封装
分层的坏处:各扫门前雪,不管他人瓦上霜

7、 真实的计算机网络中,只采用的分层 + 常见协议(标准协议),OSI 7层协议(理想中的,实际中没有用起来)

8、常用协议
物理层:解决直接相连的结点的通信问题(网卡负责的工作)
数据链路层:解决局域网结点的通信问题(操作系统负责的工作)(内核态)
网络层:解决跨局域网结点和结点通信问题(操作系统负责的工作)(内核态)
传输层:解决的是进程到进程的通信问题(操作系统负责的工作)(内核态)
应用层:业务上的内容,怎么处理,每个业务相关(我们使用网络的工作,通过socket数据交换)(用户态)

9、 数据链路层主要解决的问题
1)广播域中,数据如何保证只有目标结点收到?
发送的数据中带着名字,这个名字用技术术语就是:MAC地址;每个网卡都有全世界独一无二的MAC地址。取数据中的目标MAC地址,和自己的MAC地址做对比,如果一样,则接收,并且把数据给了网络层继续处理,否则丢弃。(所以说局域网内没有安全的数据。)
2)冲突域的问题。
如果突然好多节点都发送数据,而信道(通信的通道)中一次只能发送有限的数据,大家就冲突了。
退让:大家都停一下,各自等一个随机时间,局域网内的节点数量不是无限多的。所以概率上是可以成功的完成,虽然可能需要退让一段时间。一个局域网里接入的设备特别多,就很容易卡。冲突概率变高了。大部分局域网是会划分冲突域 的。

10、在局域网内部,结点A的应用层是如何发送数据到B的应用层?
A应用层——》数据链路层:封装
B数据链路层——》应用层:解包/分用
解包:把对方加的各层的头全部删掉
分用:为了解决每层其实不止一种协议的问题

11、 数据类似一个脉冲图,每个路由器都会在网络层对数据进行重新处理。
源+目的IP是远大目标
源+目的MAC是小目标
小目标必须根据大目标推断而来。

12、三个通信的场景:
局域网内设备和设备之间,为什么能直接通信?
(物理层+链路层)
局域网内,应用层和应用层之间通信需要注意什么?
(封装+解包/分用)
互联网内,应用层和应用层之间通信需要注意什么?
(在网络层重新加工数据:主要变更源 + 目标MAC地址
根据源+目标IP,确定目标MAC,这是路由器的作用)

13、网络在计算机中所起的作用:
I)只要在互联网中的设备,就可以实现数据的交换(结点对结点)
Ii)只要在互联网中的设备,设备上任意两个进程之间可以进行数据交换(端对端)

14、不同层称呼数据的方式:
应用层:请求/响应
传输层:UDP:数据报/TCP:段
网络层:IP:包
数据链路层:帧

15、什么是socket套接字?
OS系统提供的一套标准接口(不是Java中的接口),可以让所用应用层的程序,使用网络进行数据的交换。

16如何在互联网中确定一个进程呢?
IP + 端口。
所谓端口,就是[0-65536]的数字。
四元组标识互联网的唯一一个通信通道:
本地IP + 本地port + 远端IP+远端port
五元组 = 四元组 + 协议信息(TCP/UDP)
为了让IP地址可以唯一标识一台设备,所以一个IP地址只能属于一台设备,反过来,一台设备可以有多个IP地址。
为了让port端口可以唯一标识一个进程,所以一个port只能属于一个进程,反过来,一个进程可以有多个port。

17、传输层最常见的两个协议:
UDP:用户报文协议——不可靠的,无连接的,面向报文的
TCP:传输控制协议——可靠的,有连接的,面向流的

18、应用层上的C/S架构:客户端(Client)/服务器(Server)架构

19、UDP协议三个特点:

  1. 不可靠的
    如果你发送的数据过多,或者网络不太好的时候会出现:
    I) A发送的数据B没有收到,同时A不知道这个事情。你发送的数据对方是否收到你不清楚。
    UDP的发送成功:指的仅仅是数据被发送到网卡(网络)上了,不代表对方确实收到了。
    Ii)A是按照|abc| |def| |hij|顺序发送的,不代表B也一定按照同样的顺序|abc| |def| |hij|收到,UDP不保证发送的数据报的顺序
  2. UDP无连接
    每次发送时带着Server的信息(IP+port),不需要提前做准备工作(建立连接)
  3. 面向数据报文
    A发送的数据按照某种方式发送了三个数据报文,假设B能可靠的(收到并且有序)收到了数据则B也一定按照这种顺序三个报文的形式收到的。
    即A调用了几次发送,对等的B就需要调用几次接收。

20、TCP协议(面向字节流)三个特点:

  1. 可靠的
    A是按照|abc| |def| |hij|顺序发送的,B一定保证收到(如果B收不到,A能知道)但是,B不一定按照同样的顺序|abc| |def| |hij|收到,它可以一次性接收|abcdefghij| 也可以|abcde| |fhij|也可以
  2. 有连接的
  3. 面向字节流
    面向字节流给我们写代码造成一个问题,就是B收到了|abcdefghij|那B要如何知道A发送了几个请求过来?
    需要指定应用层协议:
    1、 规定请求是固定长度,每4个字节是一个请求
    2、 规定先发送4个字节过来,这四个字节代表请求长度,然后再发送请求
    3、 规定使用特殊字符分割\r\n
    4、 规定一个链接中只会发送一个请求。

下一篇:网络原理-TCP-IP
在这里插入图片描述

你可能感兴趣的:(JAVA)