TCP/IP协议栈

TCP/IP协议栈                             

    前几天看了《使用TCP/IP进行网络互联》一书的第二本,因为提供了TCP/IP的一个简单而完整的实现,所以对着源码学习感觉很不错。基础不是很好,今天找到了著名的《TCP/IP详解卷》从第一本“协议”开始看起,确实可以明白很多之前不明白的道理。

    TCP/IP协议实现是一个协议族,代表者为IP、TCP和UDP,但其它几个很重要的协议往往被忽略,ARP,RARP,ICMP,IGMP同样也是本 协议族的重要成员,它们可以解释很多问题,例如:一开机发现本机IP与网络上一台机器重复,原因很简单,是因为“免费ARP”的存在,即机器启动后,会以 本机IP和MAC为内容,请求本机的MAC地址。这种做法真的很巧妙,一方面机器一开启便来了个自报家门,让局域网内的其它机器得知了本机的MAC,同 样,本次请求是不应该收到ARP应答的,因为是自己请求自己的MAC。如果不巧得到一个应答,便得知是本局域网内IP重复了,呵呵。。。TCP/IP的创 立者们思想值得学习。

   TCP报文报头,大学里记不住,实际用到了,发现很简单,依次为:版本(4bits),首部长度(4bits),TOS(8bits),报文总长度 (16bits),标识(16bits),标志(3bits),片偏移(13bits),TTL(8bits),协议类型(8bits),首部校验合 (16bits),源地址(32bits),目的地址(32bits),如果没有选项,那正好20个字节。

   TCP/IP的一处重要特性是可以加在非以太网的链路层上,如点对点的SLIP和PPP,这两者是点对点的,故不存在CSMA/CD等技术,实际相对简单,以特殊字符作为前后两个包的分隔符即可。

   为何TCP与IP要分离?很简单,路由器是以IP报文为单位进行路由的,它不需要知道TCP的细节,因而它实际上只需要实现IP层即可实现路由,再次,TCP/IP的创立者的思想值得学习。

   对于TCP/IP为何会取得成功,以及为何如此流行已经有了个大概的认识。希望在之后的学习中会淘到更多的金。。。作为程序员,没有什么比了解事物的本质更让人开心的了。

原文地址:https://www.cnblogs.com/yangjunwl/p/946120.html