老席老席杂货铺
Picture of github

读书笔记-网络协议

这两天读了一下阮一峰老师的互联网协议入门,搞清楚了之前一直懵懵懂懂的东西,做了一些笔记,供日后参考。

互联网分层

由下到上分层:实体层、链接层、 网络层、传输层、应用层

实体层

  • 物理设备,电气信号(0,1)

链接层

  • 定义电气信号分组。分组协议中,以太网(Ethernet)协议占据主导地位。一组电气信号构成一个数据包,叫做帧(Frame)。每个Frame分为两部分:标头(Head)和数据(Data)。标头长度固定为18字节,包含了发送者和接收者的信息,数据最短为46字节,最长1500字节。因此,整个帧最短为64字节,最长为1518字节。
  • MAC地址只在同一子网内有效。不在同一子网内,无法获知对方的MAC地址。
  • 在同一子网内,发送者和接收者的地址由网卡上的MAC地址标识。两个网卡如何互相交互,是通过ARP(Adress Resolution Protocol)协议来解决的。在不同子网中,由网关解决数据的传送。
  • 数据通过广播的方式在网络中传送。数据广播出来后,网络上的每台计算机会拿到数据包,解析Head中接收方的MAC地址,如果与自己的MAC地址相同,则接收这个包,不是则忽略这个数据包。

网络层

  • 如果以广播方式在全球网络中发送数据会造成灾难,出现子网的概念。在子网中通过广播方式发送数据,internet中通过路由方式发送数据。
  • 网络层的作用是引进一套新的地址,以区分不同的计算机(MAC地址)是否属于同一个子网络。
  • 每台计算机出现两个地址:网络地址和MAC地址,两者没有任何关系。MAC地址在网卡上固定,网络地址由管理员分配。
  • 互联网中,通过IP协议的IP地址来表示网络地址。
  • IP地址分为两个部分,前一部分代表网络,后一部分代表主机。同一个子网中,网络部分一定相同。
  • 通过子网掩码,来确定IP地址中,网络部分与主机部分的分割点。
  • 子网掩码中,网络部分全部为1,主机部分全部为0。比如,IP地址172.16.254.1,如果已知网络部分是前24位,主机部分是后8位,那么子网络掩码就是11111111.11111111.11111111.00000000,写成十进制就是255.255.255.0。
  • IP协议的作用主要有两个:一个是为每台计算机分配IP地址,另一个是确定哪些地址在同一个子网络。
  • IP数据包是以太网数据包的数据部分,也分为标头(Head)和数据(Date)。Head中主要包含版本、长度、IP地址等信息,Data部分为IP数据包的具体内容。
  • ARP协议:当两台主机在同一子网内,ARP协议规定发送一个数据包,其中包含所要查询的主机的IP地址,MAC地址一栏为FF:FF:FF:FF:FF:FF,表示这是一个广播地址,同一子网内的主机都会接收到这个数据包,取出IP地址与自身IP地址对比,相同则做出回应,不同则丢弃。当两台主机不在同一子网,数据包由连接两个子网的网关负责找到对应的主机。

传输层

  • 传输层的功能,就是建立端口到端口的通信,相比之下,网络层的功能是建立主机到主机的通信。只要知道主机和端口,就能实现程序之间的交流。Unix系统把主机+端口叫做套接字(socket)。
  • 为了把端口(port)信息放进数据中,需要新的协议。UPD规定的数据也分为标头和数据两部分。标头部分一共8个字节,放置端口信息。UDP优点:简单,容易实现;缺点:可靠性差,无法获知数据是否到达。总长度不超过65535字节。
  • TCP协议建立连接有三次握手,断开连接有四次挥手。优点:可靠性好,确保数据不丢失;缺点:过程复杂,实现困难,消耗资源多。总长度没有限制。
  • UDP数据包、TCP数据包都是内嵌在IP数据包的数据部分,就像IP数据包内嵌在以太网数据包中一样。通常UDP/TCP数据包的长度不会超出IP数据包的长度,以确保单个UDP/TCP数据包不必再分割。

应用层

  • 应用层的作用,就是规定应用程序的数据格式。举例来说:TCP协议可以为各种各样的程序传递数据,比如Email、HTTP、FTP等,而上层应用拿到数据后,如果解析都有应用自己决定。