网络初识部分

 1.网络

单机时代-局域网时代-广域网时代-移动互联网时代

局域网时代:通过路由器把几个电脑连接起来。

广域网时代:把更多的局域网连接到一起,构成的网络更庞大,可能已经覆盖了一个城市/国家/全世界。

2.什么是路由器?

路由器就是一个用来连接其他设备的中转站。

一般家用的路由器有5个接口(1个WAN和4个LAN),WAN是用来连接上级路由器的,LAN是用来连接电脑(实现多台电脑之间的通信,一个LAN口对应一台电脑)。

ps:一般的家用电脑只有一个网口。

3.什么是交换机?

是用来扩展路由器的端口。

eg:

 4.IP地址

是用来描述一台设备在网络中的地址,使用一个32位(4字节)数字表示(一般来说IP地址是用4个0~255的十进制数字并且使用3个点相隔表示=> 点分十进制)

5.端口

区别一个主机上不同的应用程序,一个端口对应一个应用程序,但是一个应用程序可能会绑定多个端口(是一个2字节的整数)。

1~1023范围内的端口号有特定的用途(0不使用),如果是要自定义端口建议使用1024~65535内的。

在实际通信过程中往往IP地址和端口号是成对出现的。

6.协议

是一种约定,约定通信双方按照什么样的方式来进行通信(传递数据)。

网络上本质是通过光/电信号来进行传输的。

7.协议分层

按照协议的定位/作用进行分类,并且约定了不同层次之间的“调用关系”。

(1)为什么需要协议分层?

平时写代码的时候,写的多了,往往需要把代码分成多个部分(拆分之后,更容易理解,是基于人的基本认知规律)。

如果一个大的协议来解决所有的问题,此时这个协议就非常大和复杂,不太容易让人理解。

相比之下,可以将这个大的协议给拆分成多个协议,让每个小的协议只是专注于做一小块事情,这样一来,代码就更容易理解。但是由于网络通信是很复杂的,往往一个协议会被拆分成很多很多的小协议,此时就需要对这些协议进行分层。

(2)好处:

a.协议进行分层之后,上层和下层协议彼此都进行了封装,使用上层协议不必过多关注下层,使用下层协议不必过多关注上层协议。

b.每一层协议可以根据需要灵活进行替换。

8.TCP/IP五层网络模型(还有个OSI七层网络模型)

(1)解释:

a.物理层:描述网络通信的硬件设备。

b.数据链路层:两个相邻节点之间的数据传输情况。

c.网络层:进行路线规划。

d.传输层:关注起点和终点。

e.应用层:应用程序如何使用这个数据(程序员最需关注的一点)。

(2)作用:

a.应用层:就是对应到应用程序(程序员手动实现的代码)。

b.传输层和网络层:也称操作系统。

c.数据链路层和物理层:驱动程序+硬件。

9.封装和分用

描述了网络通信过程中,基本的数据传输流程。

(1)封装:

是发送方进行的操作,目的在于给数据添加更多的“辅助信息”。从上层协议到下层协议,是一个层层对数据报进行拼接报头的过程。

eg:现在要A要通过QQ把一个消息传递给B

a.应用层

QQ应用程序,QQ就会把A输入的信息(hello)给打包成一个数据报(格式是啥并不知道,得QQ得程序员才知道),现在假设格式为:

用四个字段来进行分割,这里就构成了一个简单的应用层数据报(采用字符串拼接的形式),上述描述的规则,就是此处约定的应用层协议,但是具体用几个字段,字段的顺序如何,字段之间用什么分割,这些都是可以根据需要灵活更改。

b.传输层(使用UDP)

在这里就会对刚才的数据报进行打包,变成传输层的数据报,这里打包的过程还是字符串拼接(在刚才的基础上拼接上传输层报文)。传输层打包过后,会进一步转交给网络层。

c.网络层

这里在刚才的基础上拼接上IP报头(一个数据报包含报头和载荷),进一步交给数据链路层。IP报头中包含源IP和目的IP

d.数据链路层

这里在刚才基础上拼接上以太网报头和报尾。以太网报头中包含重要的信息:源mac地址和目的mac地址(物理地址,也是用来描述设备在网络上的地址)

e.物理层

把上述数据转换成0/1的二进制数据,通过光/电信号进行传输。

(2)分用:

当上述封装过程完成后,数据报发送出去之后,就会经过一系列的交换机和路由器的转发,当数据报到达接收方之后,就要对数据报进行分用。

a.物理层

拿到光/电信号=>二进制数据=>将得到的数据交给数据链路层(以太网数据报)

b.数据链路层

通过以太网协议对数据报进行解析,这个解析过程就会解析出报头,报尾和中间的载荷,然后把载荷部分进一步交给网络层处理。

c.网路层

通过IP协议对数据报进行解析,会解析出报头和载荷,进一步交给上层(传输层)。

d.传输层

通过UDP协议对数据报进行解析,会解析出报头和载荷,进一步交给上层。

e.应用层

此时的数据就是最原始的数据,就需根据端口号把数据交给QQ这个程序,然后QQ进一步解析这里的数据,这个解析过程也就是按照前面程序员自定义的协议来进行的。

10.传输层协议

通过网络可以让两个主机之间进行通信=>基于这样的通信来完成一定的功能。

进行网络编程的时候,需要操作系统提供一组api,通过这些api(可以认为是传输层与网络层之间的交互的路径,也就是socket api,通过该api可以完成不同主机之间,不同系统之间的通信)才能完成编程。

TCP与UDP这两种协议的工作原理差异很大,导致这两种协议进行网络编程的时候,存在一定的差别,故系统分别提供了两套api。

(1)区别:

a.TCP是有连接的,UDP是无连接的。(连接是抽象的描述)

此处连接的本质是建立连接的双方各自保存对方的信息。

两台计算机建立连接就是保存了对方的关键信息。

故而要想使用TCP进行通信,则通信双方必须建立连接,做完之后才能进行通信。

使用UDP通信,则不需要建立连接就可以进行通信。

eg:这里的建立连接就好比结婚证,一式两份,夫妻双方一人一份,内容一样(记录着双方的信息),妻子一看就知道谁是她的丈夫,丈夫也一样。

b.TCP是可靠传输的,UDP是不可靠传输的

可靠传输:A->B发送信息,消息如果没有到达B这一方,A能感受到,进一步就会采取一定的措施来进行补救(超时重传之类的)

不可靠传输:A->B发送信息,A只管发送信息,不管B有没有收到(A感知不到B的状态)

在网络通信中,A->B发送一个信息,是不可能100%到达的(网络环境很复杂),要想让数据尽可能被接收到,那应该都要采用TCP,为啥还要有UDP呢?

可靠传输意味着需要付出一定的代价(机制更复杂,传输速率会降低)

c.TCP是面向字节流,UDP是面向数据报的

此处的字节流与文件操作的字节流是一个意思,TCP和文件操作是相同的,以字节为单位来传输数据,UDP则是按照数据报为单位来进行传输的。

d.TCP和UDP是全双工的

一个信道允许双向通信,就是全双工的;只允许单向通信,就是半双工的。也就是在代码中使用一个socket对象就可以进行发送/接收数据。

  • 7
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值