zoukankan      html  css  js  c++  java
  • 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为何会取得成功,以及为何如此流行已经有了个大概的认识。希望在之后的学习中会淘到更多的金。。。作为程序员,没有什么比了解事物的本质更让人开心的了。

  • 相关阅读:
    用番茄工作法提升工作效率 (二)用番茄钟实现劳逸结合(简单到不可相信)
    Scratch少儿编程系列:(九)音乐高级技巧
    Scratch少儿编程系列:(八)演奏简单音乐
    BOM (字节顺序标记)
    获取 / 设置 进程的工作目录(当前目录)
    内存对齐
    WPF 透明窗体
    C# 调用 C++ 的 DLL 返回值为 bool 时,值混乱
    WPF ListView / ListBox 更新绑定数据源时,自动刷新界面显示
    正则表达式——WPF输入控件TextBox 限定输入特定字符
  • 原文地址:https://www.cnblogs.com/yangjunwl/p/946120.html
Copyright © 2011-2022 走看看