疫情环境下的网络学习笔记 python 4.17

网络通信协议基础

互联网是我们日常生活中离不开的东西,那么网络通信协议是怎么回事呢?网络相信大家都很熟悉,但是网络通信协议是怎么回事呢,下面就让小编带大家一起了解吧。

OSI 七层

互联网协议按照不同的功能分为OSI七层,也可以合并成5层

  • 应用层
  • 传输层----数据段
  • 网络层----数据包
  • 数据链路层----数据帧
  • 物理层----数据位

可以看到,每一层的数据都有不同的叫法,这只是为了方便讨论而做的命名。

每层都有特殊的协议运行,越往上的层越靠近用户,越往下越靠近硬件

用户使用网络,感知到的只是最上一层应用层,其下的层开发者也不需要去真的封包解包,都是使用套接字来处理

物理层

计算机与计算机之间物理的介质:电线,网线,光线

发送的都是0101这样没有意义的电信号,需要读出电信号的实际意义,需要数据链路层对他进行处理

数据链路层

规定一种协议,所有的计算机都基于这种协议来通信,规定了多少电信号位为一组,这一层就依据这个协议来对读0101数据:以太网协议

以太网协议

Ethernet,做出一系列规定,所有的计算机都可以依据这个规定通讯

  1. 一组电信号构成一个数据包,叫做

  2. 每一数据帧分成两个部分,报头和数据

    包含

    • 发送者的地址,占6个字节
    • 接收者的地址,占6个字节
    • 数据的数据类型,6个字节

    数据部分就是具体传的数据,最长有限制,超过了就会分片发送

  3. 头中放的地址是mac地址

使用以太网协议,就可以知道0101表示的是什么内容

mac地址

以太网协议规定每个接入互联网的设备都要有网卡,网卡的地址在出场的时候就被写死,全世界唯一

发送者和接收者的mac地址放在数据帧的头中

广播

以太网内的通信方式,以太网内所有计算机都会接收到这个数据,都对他进行解包,看看头里面的接收者是不是自己,不是就不管,是的话就继续读下去得到数据

类似于村口大喇叭,所有人都能听到,但是只有指定的那个接收者会进行回应

网络层

要与全世界的计算机进行通信,当然不能用一个全世界都能听到的大喇叭喊话,于是规定另一种协议:IP协议

IP协议

区分要发送的数据哪些是可以用大喇叭喊到的,哪些不是

  • 如果在一个村,大喇叭喊一声可以得到回应,就用喇叭喊
  • 不在一个村,就采用别的方法先发电报给别的村,别的村广播站再用大喇叭喊

IP地址被分为两部分,单独使用哪个部分都不能够辨识一个IP所处的子网,必须一起使用

  • 网络部份:标识子网
  • 主机部分:标识主机

子网掩码

长的跟IP地址一样,是表示子网络特征的一个参数,可以通过and运算用来判断两个IP地址是否再一个子网内

总结一下,IP协议的作用主要有两个,一个是为每一台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。

IP 数据包

于数据链路层的帧一样,网络层也会把数据包起来,加上头,然后把整个包当作数据丢给链路层

ARP协议

一种通过广播获取要通信计算机的mac地址的方式,使用arp协议之后,ip地址就可以标识实际上任意一台计算机

传输层

网络层的ip帮我们区分子网,以太网层的mac帮我们找到主机,还需要找到具体的应用程序:使用端口,与网卡关联

传输层功能:建立端口到端口的通信

  • 计算机上每一个需要网络通信的程序,都会开一个端口
  • 同一时间只会有一个程序占据一个端口
  • 端口的范围是 0-65535,其中8000以前是操作系统用的,之后是应用软件用的

tcp协议

在传输数据前先在发送端和接收端建立逻辑连接,然后再传输数据,它提供了两台计算机之间可靠无差错的数据传输

TCP和UDP使用IP协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。

在传输数据前必须进行三次握手,用来创建双向的连接,三次握手后才能进行数据传输

image

传输过程中,客户端和服务端都会经历两种状态的变化

  • 客户端:syn_cent ----> established
  • 服务端:syn_listen ----> wstablished

总结三次握手的步骤:

  1. 第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。
  2. 第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。
  3. 第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手

TCP结束数据传输要进行四次握手

image

客户端A发送一个FIN,用来关闭客户A到服务器B的数据传送(报文段4)。

服务器B收到这个FIN,它发回一个ACK,确认序号为收到的序号加1(报文段5)。和SYN一样,一个FIN将占用一个序号。

服务器B关闭与客户端A的连接,发送一个FIN给客户端A(报文段6)。

客户端A发回ACK报文确认,并将确认序号设置为收到序号加1(报文段7)。

猜你喜欢

转载自www.cnblogs.com/telecasterfanclub/p/12733168.html