互联网协议分物理层、数据链路层、网络层、传输层、应用层。
简单来说,
物理层是实际的连接两个电脑的实际方式:光缆、电缆、双绞线、无线电波等方式。传输的是01信号。
后面几层用来解决实际传输中碰到的问题,我要传给谁?怎么找到对方?对方主机有很多应用怎么知道具体是哪一个?传输数据内容的格式。
数据链路层,“以太网”协议成为电信号分组主流,以太规定,一组电信号叫一个帧,一个帧分为头和数据。头是固定18个字节,数据46-1500个字节。
用来标识对方的和自己的MAC地址,MAC地址是每一个网卡出厂的时候对应一个12个16进制位,全球独一无二。怎么根据MAC地址找到对方?方法就是在子网内广播消息,每个计算机判断是不是自己的MAC地址,是就处理,不是就抛弃。
网络层,但是不是所有计算都在同一个子网中,不然所有都广播接受到太多冗余数据就灾难了。不同子网之间,MAC地址互相还是找不到对方,这时就需要IP地址来区别哪些是属于同一个子网,IPV4协议,32位2进制数,由子网掩码,标识哪几位为相同子网。两个ipv4地址,都与自己的子网掩码做与,结果相同就是相同子网。IP协议作用,一个是分配ip地址,一个是判断相同子网。
ip协议头可以放到以太网协议的数据中,头20-60个字节,数据最长65534字节,如果超出就要分成多个以太网帧。ip头里放版本,长度、ip地址等。整个头和数据作为以太帧的数据
ARP协议,由于数据通过以太网协议传输,就必须知道对方的MAC地址,但是通常知道ip地址(DNS服务),不知道对方MAC地址。如果不在一个子网,就只能把数据发给网关,如果在一个子网,就发送一个MAC地址为FFFFFFFFFFF的,包含ip地址的,接收后确认是否是自己的ip,并返回MAC地址,否则丢弃。
传输层,有了IP和MAC地址,可以连接任一两台机器,但一台主机会做很多操作,要知道请求的是哪一个操作,需要指定端口号。端口0到65535正好是16位2进制数。0到1023端口被系统占用,用户用高位。网络层是主机和主机间沟通,传输层是端口和端口连接。
UNIX把主机+端口叫做套接字。
传输层协议UDP协议和TCP协议。UDP简单,把UDP协议放到IP数据中。TCP三次握手,第一次发送连接请求,对方回复同意,连接方发送确认,对方等待连接放发送数据,连接方可以发送数据。三次握手是最少的保证有效可靠沟通的次数。
应用层,数据源五花八门,要知道怎么解析数据,需要知道对方传送的规则。应用层的作用就是规定数据的格式。
包括Email,FTP,www等等。
用户上网需要什么:
1.IP地址,子网掩码
2.网关地址
3.DNS地址(网址和ip的映射)