tcp checksum incorrect_TCP/IP这门技术有什么用?

为了更好地阐述这个抽象的话题,将会用不同的视野来分析同样的问题,记得有一个盲人摸象的故事,有的人说大象是大树,有的人说大象是蒲扇,这当然都很片面,但如果把这些观点都集中起来就大概可以勾勒出大象的框架。

5d425a5443c72b1a37d7c73102f2a9a4.png

1. 用户眼中的TCP/IP协议

选择网卡,点击鼠标右键,选择属性,在菜单里就会看到TCP/IP协议,表示已经安装在系统里,还可以看看IP地址、子网掩码、缺省网关、DNS服务器,这时用户可以打开浏览器上网,非常简单不是吗?

1.1 卸载软件TCP/IP协议

如果想对TCP/IP有感性认识,可以点击右键卸载它们,然后你会看到它们从网卡的软件属性里消失了,这时你再打开浏览器,已经无法上网了。知道TCP/IP的重要性了吧?那好,我们再把TCP/IP安装回来,于是我们又可以上网了,怎么那么神奇?

1.2 卸载硬件网卡

现在我们再来看看网卡的硬件属性,会看到网卡驱动程序一栏,选择卸载,然后你会发现网卡消失了,其它的所有属性也都消失了。应了一句成语:皮之不存 ,毛将焉附。打开浏览器上网,会直接提示你,网络不可用。然后我们再把驱动程序安装回来,网卡又出现了,所有的软、硬件属性都在,又可以上网冲浪了。

1.3 卸载软件浏览器

然后我们再去控制面板,选择添加/去除程序图标,可以卸载掉你的浏览器(假设是唯一的浏览器),这时我们连输入网址的地方都没有,如何上网浏览网页呢?那好,我们再将浏览器安装回来,又可以上网了。

用户小美萌哒哒看着我们操作,于是提出了新的问题,系统自带的IE浏览器不好用,能否卸载掉,再安装其它的浏览器?当然可以!用户可以自由选择浏览器来上网。

小美又有一个问题,那可以换一块网卡吗?当然也可以啦,拔掉旧的网卡,换上新的网卡,再安装网卡驱动程序就OK了,用户可以自由选择硬件网卡。

小美突发奇想,胖哥哥,那能否卸载掉TCP/IP,换一个其它类似的东东?胖哥哥开始循循善诱了起来:因为Internet上的服务器、用户客户端99.99%在使用TCP/IP,如果换其他协议,可能会无法通信,因为不同协议无法理解对方在说什么,就好比说不同语言的人无法沟通一样。如果沟通则需要翻译,这白白增添了复杂度。所以我们不能换TCP/IP。

换句话说,我们可以换网卡、换浏览器,却无法更换TCP/IP,TCP/IP是我们唯一的选择。

TCP/IP起到一个承上启下的中枢作用,向下可以工作在任何数据链路层协议,如 Ethernet / HDLC/ PPP/ ATM / Frame Relay;向上可以支持很多种应用层协议,如 HTTP / SMTP / FTP / POP3,以及用户自定义的协议;TCP/IP作为一个协议簇工作在操作系统内核,完成面向连接的可靠传输(Connection-Oriented TCP)或无连接的不保证可靠传输(Connectionless UDP),所以TCP/IP协议是计算机网络的核心引擎。

2. 操作系统眼中的TCP/IP

TCP/IP以独立的进程运行在操作系统的内核,比如TCP进程、IP进程,为了保证IP进程能够正常工作,需要完成IP地址、网络掩码、缺省网关、DNS服务器的初始化工作,这个由DHCP进程来完成,当然也可以用户手工配置以上参数。

DHCP进程会发广播报文,然后从网卡发送出去,如果二层广播域里有DHCP服务器,会分配以上IP参数给用户的DHCP进程,完成IP进程的初始化工作,至此,TCP/IP就可以正常使用。

当小美打开浏览器,就是打开一个用户进程(取名为http进程),然后输入网址 http://www.zhihu.com,会触发一系列动作:

2.1 首先要将网址翻译为IP地址,需要调用DNS进程,DNS进程会发一个请求到DNS服务器,然后得到IP地址A。

2.2 http进程将自己的网页请求组织好,加上http 协议头,类似 http + data ,调用TCP进程,告诉TCP进程要把数据http + data发给A。

2.3 TCP进程会触发与A的三次握手连接,这三次握手是纯TCP报文,不带任何http 数据,三次握手都需要调用IP进程,入口参数为A。

2.4 IP进程以A为输入参数,查询路由表,发现需要发给缺省网关处理,需要知道缺省网关的MAC地址,调用ARP进程请求网关的MAC,入口参数是网关IP。

2.5 ARP进程发广播ARP请求,得到网关MAC,返回给IP进程。

2.6 IP进程调用网卡驱动程序进程,入口参数为网关的MAC,数据为 IP头+ TCP头。

2.7 网卡发送出去,并最终到达服务器,并最终完成了三次握手。

2.8 TCP进程将 TCP头+ http头 + data 调用IP进程,步骤类似2.4 -2.7,不再叙述。

2.9 假定http 进程最后从服务器得到网页返回,将网页显示在浏览器上。

3. OSI眼中的TCP/IP

OSI分七层:

七层:应用层

六层:表示层

五层:会话层

四层:传输层

三层:网络层

二层:链路层

一层:物理层

浏览器对应第七、第六、第五层

TCP/IP对应第四、第三层

TCP层对应第四层,即传输层

IP层对应第三层,即网络层

网卡(驱动程序)对应第二层(链路层)、第一层(物理层)

所以 浏览器 + TCP/IP + 网卡(驱动程序)完美对应OSI参考模型七层。

为何要OSI分层?

那是为了让不同的操作系统、不同的厂商的终端设备能够通信,大家遵循一样的协议标准,好比说同一种语言的人可以自由自在地沟通。

分层还可以让不同的底层网卡可以独立实现自己的功能,对下(物理层)实现相同的编码方式,对上(网络层)提供标准的接口,至于内部如何实现,别人并不care。

对于IP层也是,内部独立完成自己的功能,对上提供标准的接口,对下调用标准的接口,这样开发起来非常便利。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值