软件工程师的视角看网络(网络那点事)

[你能做到的,只是不要想一步登天]


一、概述

     在以太网中,我们都很清楚网络的分层模型,ISO模型7层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。TCP/IP模型四层协议:主机至网络层、互联网层、传输层、应用层。 在实际应用中我们都是用TCP/IP的模型。下面我讲下软件设计需要了解的网络知识,个人感觉软件工程师应该知道这些知识的,当然也是些基础的网络知识。主要从从物理层、数据链路层、互联网层、传输层、应用层的角度。 对于网络设备,集线器工作在物理层;2层交换机在链路层;3层交换机在网络层、链路层;路由器在网络层;负载均衡一般是在传输层,也有应用层、网络层、链路层的。防火墙也一般是穿层。不过,以上也不是绝对的。现在的一些设备基本没有固定的层次,基本都是穿层的。
以下这张图是经典的网络逻辑图: 软件工程师的视角看网络(网络那点事)
软件工程师的视角看网络(网络那点事)

IP地址分为:网络段+主机端 一个网络段就代表一个子网。这个可以参考: http://en.wikipedia.org/wiki/IP_address
IPv4地址是非常缺乏的,这个跟当时的设计有关系。为此引入了NAT,此有很多争议,但是这个解决ipv4的ip缺乏问题,也不乏是一个好的方案。 以下是其中的一种结构,简单地讲就是:就是把无连接的网络做成了面向连接的网络。引入了传输层端口的概念。

软件工程师的视角看网络(网络那点事)

到传输层,才有了连接的概念了。在传输层以下是不用面向连接的(也就是直接扔包,直接存储转发掉。),第一张图,data flow基本说明了传输层的含义。 TCP连接连接建立需要三次握手,断开连接是四次握手【因为TCP是双工的,断开需要一方申请且另一方确认的,连接的时候可以把sync、ack合为一个】。如下是 TCP链接管理有限状态机: 

软件工程师的视角看网络(网络那点事)

六、应用层

就是实际的网络应用了,这里就千奇百怪了,想深入了解那块,就google吧。目前大约有:DNS、e-mail、万维网(其中涉及http)等等。。。 大部分的软件从业人员都工作在此层的。
有一些应用就用传输层低于1024的端口,如 HTTP的80端口。当然这些都可以更改,没有绝对的。

七、一个关于传输层连接的例子

我从家的机器访问公司的网络,通过netstat查看得到: client的情况为:

软件工程师的视角看网络(网络那点事)
软件工程师的视角看网络(网络那点事)
软件工程师的视角看网络(网络那点事)
主要解释下连接的事情,连接是传输层的事情。下层是不存在的连接的事情。为什么存在端口,原因还是应用层程序通过监听端口来区分不同的线程的。
从client上发起与服务器的三次握手连接后,连接建立起来,但是双方的目标ip都不是对方的ip。怎么建立的呢中也给出一些答案。 这个关键的就是NAT做了手脚。建立连接本质就是要分析tcp的数据包,当发现发给我的数据包后,应答的时候,就把 源地址目标地址互相换下,再发给对方。其实 发送方并不知道数据包是否真的发给了 对方。


八、参考资料

tcp:http://en.wikipedia.org/wiki/Transmission_Control_Protocol ipv4:http://en.wikipedia.org/wiki/IPv4 http://en.wikipedia.org/wiki/File:IP_stack_connections.svg NAT: http://en.wikipedia.org/wiki/NAT Tcp state diagram :http://en.wikipedia.org/wiki/File:Tcp_state_diagram_fixed_new.svg 大学课程《计算机网络》第四版

九、特别说明:      大部分的图片来自网络,特别是wikiped。作者:阿里巴巴封神悟
     【您感觉软件人员应该掌握哪些网络呢请留下您的言论吧。您的言论是我前进最大的动力。】

来源:bxyz1203

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2012年3月13日
下一篇 2012年3月13日

相关推荐