Tcp/IP协议中,一端要给另一端发送数据,是先进行ARP请求和应答,还是先建立tcp连接?
如果是前者:我ARP请求完之后,得到了MAC地址,就可以直接发送数据了,连TCP连接都不用建立?还是说发送的第一份IP数据报其实就是tcp连接的SYN请求?
如果是后者:那我连MAC地址都不知道,连对方的第二层都到不了,还怎么进行TCP连接?
在看《TCPIP协议详解 卷一》的时候,发现有这么一句话 “当我们看到建立连接的T C P报文段序列时,会发现A R P请求对应于T C P试图发送的初始TCP SYN(同步)段。” 不是很理解这句话,所以对这两者的先后关系产生了疑问
多谢!
MAC地址只用于在局域网中,主机与主机,主机与交换机之间数据收发的目的地标识。IP地址和MAC地址的对应关系(ARP查询)只在局域网中有意义,因为数据发送是先在局域网中,然后经过路由器一层层进入广域网,再一层层回到对端的局域网。在IP通信中,如果对方的IP不在当前局域网,那么数据包需要由网关发送给高一层的路由器,由高一层的路由器负责路由转发,所以这个时候发送端只要知道网关的MAC地址就可以了,因为你就算知道对端的MAC地址也没用,你的当前局域网是查不到这个MAC地址的。即使目标主机就在同一个局域网中,在TCP通信过程中,依旧需要依靠IP来进行,不可能直接通过MAC地址,只不过此时,你的网关既负责二层交换,同时也负责IP路由。