MTU:一个网络包的最大长度,以太网中一般是1500字节;(含有头部长度,包括IP头部,TCP头部,不包括MAC头部)
MSS:除去头部后,一个网络包所能容纳的TCP的数据的最大长度
下图为TCP/IP软件的分层结构:
其中,IP中ICMP协议用于告知网络包传送过程中产生的错误及各种控制信息,ARP协议用于根据IP地址查询相应的以太网的MAC地址。
TCP模块在执行连接、收发、断开等各阶段的操作中,都需要委托IP模块将数据封装成包发送给通讯对象。
下面介绍一下网络包的一些基本知识:
包是由头部和数据两部分组成。
头部包含目的地等控制信息,头部后面就是委托方要发给对方的数据。
下面是TCP/IP包的结构:
简单区分一下路由器和集线器的区别:
它们在传输网络包的时候有各自的分工:
1、路由器是根据IP规则传输包的设备,根据目标地址判断下一个路由器的位置
2、集线器是按照以太网规则传输包的,在子网中将网络包传到下一个路由。
下图是包收发操作的整体过程:
包收发操作的起点就是TCP模块委托IP模块发送包的操作,这个委托的过程就是在TCP模块在数据块的前面加上TCP头部,然后整个传递给IP 模块,这部分就是网路包中的内容。
与此同时,TCP模块还需要指定通信对象的IP地址,收到委托后,IP模块会将包的内容当做一个整块数据,在前面加上包含控制信息的头部。
IP模块会添加IP头部和MAC头部这两个,其中,IP头部中包含IP协议规定、根据IP地址将包传送到目的地的控制信息;MAC头部包含通过以太的局域网将包传输至最近路由器所含的控制信息。
IP头部包含很多控制信息,其中重要的是包将发送到哪里的IP地址,这是应用程序提供的;IP头部中还需要填写发送方的IP地址,需要IP模块利用路由表进行判断,即判断发送使用的网卡。
MAC地址是在网卡生产时写在ROM里面的,是全世界唯一的一串地址,是生成网卡时写入的,根据IP地址查询MAC地址。
我们通过ARP协议查询目标路由器的MAC地址,发送广播来查询即可:问:**IP地址是谁的? 答:**IP地址是我的,我的MAC地址是**。为了防止网络中增加很多ARP包,我们会有一个ARP缓存空间中保存查询到的MAC地址。