协议族的分层抽象,一定意义上来说,每层敬职敬责的做自己的工作,同时也共同完成通讯协议的共同目标。
这是一个垂直划分的抽象层次,挺有意义。
1、链路层/数据链路层/网络接口层
操作系统中的设备驱动程序和计算机的网络接口卡,负责处理与网络电缆或其他媒介的物理接口细节。该层协议主要包括ARP、RARP。
2、网络层
处理分组在网络中的活动,如分组的选路;该层协议包括IP协议,ICMP协议,IGMP协议。
3、运输层
主要为在两台主机上的应用程序提供端到端的通信。主要包括TCP协议、UDP协议。
4、应用层
特定的应用程序细节。如Telnet、FTP、SMTP、SNMP等。
应用层和运输层使用端到端的协议,网络层提供的却使逐跳协议(Hop-by-Hop)。
网络层提供的是不可靠的服务,只是尽可能快的把分组从源节点送到目的节点。
TCP为了提供可靠的服务,采用了超时重传、发送和接受端到端的确认分组机制。
从上层到下层,每层对数据进行封装,添加相应层协议的首部或首部+尾部,而从下层到上层,逐步去掉首部或首部+尾部。
以太网层:14字节首部 + 4字节尾部,称为帧,帧最大长度:64~1518
IP首部:20字节
TCP首部:20字节。
UDP首部:8字节
因此一个tcp的以太网帧有:20+20+14+4=58字节是与真实信息无关的。
IP首部:8bit协议域,1:ICMP,2:IGMP,6:TCP,17:UDP
TCP和UDP:使用16bit的端口号表示不同的应用程序(源端口号和目的端口号)。
TCP协议的端口号说明:
1~1024是系统或知名端口号,被IANA所管理,1024~65535的端口号都可以作为服务端口号,server端的端口号需要一直运行直到关闭;
客户端用于连接server的端口号,称为临时端口号,临时端口号通用分配:1024~5000,>5000是Linux预留的。
端口号可以查看文件:/etc/services查看。
以太网帧首部:16bit的帧类型域。
不太懂链路层的东东,知道CSMA/CD的存在,但也不知道为什么如果是10G的全双工就不用了,why。