OSI分层 (7层):物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
TCP/IP分层(4层):网络接口层、 网际层、运输层、 应用层。
每一层的协议如下:
物理层:RJ45、CLOCK、IEEE802.3 (中继器,集线器,网关)
数据链路:PPP、FR、HDLC、VLAN、MAC (网桥,交换机)
网络层:IP、ICMP、ARP、RARP、OSPF、IPX、RIP、IGRP、 (路由器)
传输层:TCP、UDP、SPX
会话层:NFS、SQL、NETBIOS、RPC
表示层:JPEG、MPEG、ASII
应用层:FTP、Telnet、SMTP、POP3、HTTP、WWW、NFS、DNS
每一层的作用如下:
物理层:通过媒介传输比特,确定机械及电气规范(比特Bit)
数据链路层:将比特组装成帧和点到点的传递(帧Frame)
网络层:负责数据包从源到宿的传递和网际互连(包PackeT)
传输层:提供端到端的可靠报文传递和错误恢复(段Segment)
会话层:建立、管理和终止会话(会话协议数据单元SPDU)
表示层:对数据进行翻译、加密和压缩(表示协议数据单元PPDU)
应用层:允许访问OSI环境的手段(应用协议数据单元APDU)
TCP对应的协议:
(1) FTP:定义了文件传输协议,使用21端口。
(2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。
(3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。
(4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。
(5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。
UDP对应的协议:
(1) DNS:用于域名解析服务,将域名地址转换为IP地址。DNS用的是53号端口。
(2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。
(3) TFTP(Trival File Tran敏感词er Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。
假定你输入的网址www.baidu.com,你本地主机IP:2.2.2.2
Step 1: 客户端浏览器通过DNS解析到www.baidu.com的IP地址:1.1.1.1。
之后会发起一个HTTP会话,HTTP 层把client 的数据组织好,称为data,调用TCP socket 的连接函数:TCP_connect(1.1.1.1,80)。
Step
2: TCP client 触发三次同步握手,协商各自的sequence
number,即各自数据第一个字节对应的序列号,这样就可以对发送的每一个字节数据进行编号,方便对方确认;同时还协商window
size,告知对方自己最大的接收缓冲区大小,可以用来进行流量控制,免得对方发送太快而本地没有足够缓冲区而丢弃;在TCP option
里告知彼此的MSS(Maxitum Segment Size 最大分段大小),以免引起不必要的IP分片,同时还可能协商SACK,NACK,window scaling
,authentication,分别的作用是减少数据丢包而引起的重传数目,加大window size,对TCP Data
进行完整性保护,完成进入 step 2.1。
Step 2.1 调用TCP socket 的发送函数:TCP_send(1.1.1.1,80,data)
Step 3: TCP完成TCP头、TCP payload 所有字段的封装,称之为segment,调用IP接口函数:IP_send(1.1.1.1,segment )
Step
4:
IP层检查路由表,决定出口,决定下一跳,通过ARP查询下一跳的MAC,假定为MAC2;然后IP层判定包是否需要分片,如果分片,需要把TCP
segment 做切割成小片处理,假定这里不需要分片,于是IP层完成了IP packet 的所有封装,调用 Ethernet_send (
MAC2, packet)。
Step 5:
网络接口、网卡完成所有的封装,加上Ethernet header ,所有信息都知道了,source
MAC,这个是自己的MAC,Destination MAC,这个是MAC2,Ether
Protocol:0x0800,然后把计算的校验码CRC放入FCS,形成了Ethernet Frame。
Step 6: 发连续7个字节preamble:10101010,再发一个字节的SFD:10101011,然后发送Ethernet frame。
the end!