TCP/IP
TCP/IP四层模型从上到下分别是:
应用层:用户进程
运输层:TCP/UDP
网络层:ICMP/IGMP/IP
链路层:硬件接品/ARP/RARP
用户数据在传输过程中,一般会先后加上 应用首部、TCP首部、IP首部和以太网首部,这个过程称为封装,这样对等方就可以做相应的解封(分用)操作。
端口分三种:
Ports 0-1023 - well known ports (由 IANA 分配给一些特定服务)
Ports 1024-49151 - Registered port: vendors use for applications
Ports >49151 - dynamic / private ports
以太网 和 IEEE 802.3 对数据帧的长度限制分别是 1500 和1492 字节,这个限制叫作 MTU。两个主机通信可能经过多个网络,其中最小 MTU 称为路径MTU,如果IP数据报长度大于路径MTU,则会导致分片(Fragmentation),应尽量避免分片,因为它会降低网络通信效率。
以太网帧格式:
目的物理地址(6)+源物理地址(6)+ 帧类型(2)+ 数据(46~1500)+CRC(4)
前12个字节是以太网首部,帧类型分为三类,它的不同导致后面的数据也不同:
1、类型0800(2)+ IP数据报(46~1500) 【不足46字节就补全】
2、类型0806(2)+ ARP请求/应答(28)+ PAD(18)
3、类型8035(2)+ RARP请求/应答(28)+PAD(18)
其中,`ARP请求/应答(28)`又分为:
硬件类型(2)+ 协议类型(2)+ 硬件地址长度(1)+ 协议地址长度(1)+ op(2)+ 发送端以太网地址(6)+ 发送端IP地址(4)+ 目的以太网地址(6)+ 目的地址(4)
IP->MAC ARP 地址解析
MAC->IP RARP 反向地址解析
ARP 和 RARP 实质是介于链路层和IP层之间的协议,但归于链路层。
ICMP:用于传递差错信息、时间、回显、网络信息等控制数据。
TCP连接建立有三次握手,连接终止有四次握手。
TCP连接终止,是两个方向分别终止的,不是同时终止,先是A向B发起终止请求`FIN x,ACK y`,B同意并回发`ACK x+1`;然后B向A发起终止请求`FIN y,ACK x+1`,A回发`ACK y+1`