关于TCP/IP,必须知道的十个知识点( 二 )


如果查询的IP-MAC值对不存在,那么主机就向网络发送一个ARP协议广播包,这个广播包里面就有待查询的IP地址,而直接收到这份广播的包的所有主机都会查询自己的IP地址,如果收到广播包的某一个主机发现自己符合条件,那么就准备好一个包含自己的MAC地址的ARP包传送给发送ARP广播的主机 。
而广播主机拿到ARP包后会更新自己的ARP缓存(就是存放IP-MAC对应表的地方) 。发送广播的主机就会用新的ARP缓存数据准备好数据链路层的的数据包发送工作 。
RARP协议的工作与此相反,不做赘述 。
3. ICMP协议
IP协议并不是一个可靠的协议,它不保证数据被送达,那么,自然的,保证数据送达的工作应该由其他的模块来完成 。其中一个重要的模块就是ICMP(网络控制报文)协议 。ICMP不是高层协议,而是IP层的协议 。
当传送IP数据包发生错误 。比如主机不可达,路由不可达等等,ICMP协议将会把错误信息封包,然后传送回给主机 。给主机一个处理错误的机会,这 也就是为什么说建立在IP层以上的协议是可能做到安全的原因 。
四、ping
ping可以说是ICMP的最著名的应用,是TCP/IP协议的一部分 。利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障 。
例如:当我们某一个网站上不去的时候 。通常会ping一下这个网站 。ping会回显出一些有用的信息 。一般的信息如下:

关于TCP/IP,必须知道的十个知识点

文章插图
 
ping这个单词源自声纳定位,而这个程序的作用也确实如此,它利用ICMP协议包来侦测另一个主机是否可达 。原理是用类型码为0的ICMP发请 求,受到请求的主机则用类型码为8的ICMP回应 。
ping程序来计算间隔时间,并计算有多少个包被送达 。用户就可以判断网络大致的情况 。我们可以看到,ping给出来了传送的时间和TTL的数据 。
五、Traceroute
Traceroute是用来侦测主机到目的主机之间所经路由情况的重要工具,也是最便利的工具 。
Traceroute的原理是非常非常的有意思,它收到到目的主机的IP后,首先给目的主机发送一个TTL=1的UDP数据包,而经过的第一个路由器收到这个数据包以后,就自动把TTL减1,而TTL变为0以后,路由器就把这个包给抛弃了,并同时产生 一个主机不可达的ICMP数据报给主机 。主机收到这个数据报以后再发一个TTL=2的UDP数据报给目的主机,然后刺激第二个路由器给主机发ICMP数据 报 。如此往复直到到达目的主机 。这样,traceroute就拿到了所有的路由器IP 。
关于TCP/IP,必须知道的十个知识点

文章插图
 
六、TCP/UDP
TCP/UDP都是是传输层协议,但是两者具有不同的特性,同时也具有不同的应用场景,下面以图表的形式对比分析 。
关于TCP/IP,必须知道的十个知识点

文章插图
 
面向报文
面向报文的传输方式是应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文 。因此,应用程序必须选择合适大小的报文 。若报文太长,则IP层需要分片,降低效率 。若太短,会是IP太小 。
面向字节流
面向字节流的话,虽然应用程序和TCP的交互是一次一个数据块(大小不等),但TCP把应用程序看成是一连串的无结构的字节流 。TCP有一个缓冲,当应用程序传送的数据块太长,TCP就可以把它划分短一些再传送 。
关于拥塞控制,流量控制,是TCP的重点,后面讲解 。
TCP和UDP协议的一些应用
关于TCP/IP,必须知道的十个知识点

文章插图
 
什么时候应该使用TCP?
当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议 。
什么时候应该使用UDP?
当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP 。
七、DNS
DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数据 。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析) 。DNS协议运行在UDP协议之上,使用端口号53 。
八、TCP连接的建立与终止
1.三次握手
TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接 。在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的 。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP窗口大小信息 。


推荐阅读