OSI 七层参考模型几个小问题 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
vtexfan
V2EX    互联网

OSI 七层参考模型几个小问题

  •  
  •   vtexfan 2015-07-03 21:26:06 +08:00 3406 次点击
    这是一个创建于 3754 天前的主题,其中的信息可能已经有所发展或是发生改变。

    每次看TCP/IP相关的书籍,第一章就看不下去了,很几个问题希望熟悉的帮解答下:

    1.HTTP协议和TCP协议为什么不是在同一层呢?HTTP是表示层的东西,TCP是传输层的东西,那比如网页浏览器,它用的什么协议呢?用抓包工具抓到的HTTP,但根据书上讲的,传输的时候是用TCP或UDP中的一种对吧?这个概念不是很懂

    2.一个网络应用程序,它应该没用到表示层的任何东西吧?那这时候表示层的作用是什么呢?其实,这个问题和第一个问题差不多。主要是对每层的作用不是很懂。

    3.能不能以通俗、白话的方式讲讲七层每层的作用,拿浏览器或者一个普通的聊天程序举例。

    4.tcp/ip和OSI七层模型的分层是不一样的,有什么区别吗?比如应用层、表示层、会话层合并成tcp/ip的应用层,以前三层的东西在这一层中完成?

    5.谢谢!小白问题误笑!希望帮解答下,再次表示感谢!

    15 条回复    2015-07-05 16:54:51 +08:00
    wy315700
        1
    wy315700  
       2015-07-03 21:30:36 +08:00   1
    1 OSI 七层模型只是一个理论上的东西 并没有被实施
    2 现在广泛使用的是TCP/IP协议,没有表现层,传输层上面就是应用层。
    3 HTTP协议是包在TCP里的一个协议,你可以理解成一个瓶子里装了酒。
    gamexg
        2
    gamexg  
       2015-07-03 21:44:41 +08:00 via Android
    可以理解为一层层的套信封,TCP信封里面是http信封,http信封里面才是内容。TCP信封外面是链路层信封。

    每层都有自己的收件地址,发件地址。
    hahasong
        3
    hahasong  
       2015-07-03 21:47:47 +08:00
    一说有7层,另一说有4层,这些都只是逻辑上的分层而已。其实你理解4层的就好了
    7层:物理层,数据链接层,网络层,传输层,会话层,表示层,应用层
    4层:物理层 网络层 传输层 应用层

    高层包装了低层,相当于JAVA里面的流的包装类
    1.ip协议是网络层,tcp是传输层协议。http是包装了tcp,是应用层的协议,应用层可以理解成软件自己定义的协议。而tcp只是网卡上认的协议,更底层一些。知道俄罗斯套娃不,外层的娃娃就代表高级的协议。最里边的表示低级的物理层协议。依次类推。当软件从应用层发送数据的时候,应用层的协议被编码成网络层的协议,网络层的协议再编码成物理层的协议,直到最后编码成网线里的二进制电流
    发送出去。接收方接收的时候顺序相反,接收到二进制电流后,先解包成网络层协议,然后网络层协议被解码成应用层协议。最后软件在从应用层协议的返回里取回数据。
    2.你当会,表,应都是应用层就可以了
    3,4,5 tcp/ip协议这本书老厚了,又枯燥。我也是小白,反正这么理解,基本上就懂了
    Biwood
        4
    Biwood  
       2015-07-03 21:53:14 +08:00
    出门左转维基百科: https://en.wikipedia.org/wiki/OSI_model

    另外,HTTP 是应用层好吧。
    不同的抓包工具抓缺的结果也不同啊,Filddler 就是抓 HTTP 的数据,Wireshark 可以抓传输层的数据。
    vtexfan
        5
    vtexfan  
    OP
       2015-07-03 22:52:58 +08:00
    谢谢楼上几位兄弟,你们都太棒了。不过你们说的都有点晦涩,我脑筋不太好,还是有点不太明白。
    @hahasong 兄的解释,我就差那么一点点就能完全理解了。让我再仔细琢磨琢磨。
    akira
        6
    akira  
       2015-07-03 23:47:21 +08:00
    HTTP是在TCP的上层,TCP告诉你传了一堆数据,HTTP则告诉你这堆数据是啥。所以你抓浏览器的包,发现是TCP协议完全没有任何冲突的地方。
    lk09364
        7
    lk09364  
       2015-07-03 23:53:59 +08:00
    这个是 TCP 包:


    而 HTTP 在上图的 Data 里面。

    Image from http://liangjiabin.com/blog/2015/03/difference-between-tcp-vs-udp-protocol.html
    fzinfz
        8
    fzinfz  
       2015-07-03 23:56:29 +08:00
    $ netstat -ltup
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
    tcp 0 0 *:http *:* LISTEN -
    tcp 0 0 *:ssh *:* LISTEN -
    udp 0 0 *:ntp *:* -
    vtexfan
        9
    vtexfan  
    OP
       2015-07-04 02:20:23 +08:00
    谢谢楼上三位!
    @akira 兄,你这么说我好像明白了点什么,快要开窍了。那如果一个普通的网络应用程序,没用到HTTP之类的这种协议,就传输一个字符串"hello",那谁来告诉的这堆数据是啥?你明白我的意思吗?
    qw7692336
        10
    qw7692336  
       2015-07-04 04:15:34 +08:00 via Android
    不用那么麻烦,你找个抓包工具,抓一下传输层的包(TCP包),就懂了。我就是在玩过抓包之后秒懂的。你开chrome的开发者选项,切换到network拦,对比跟抓包工具抓到的包对比一下。之后你可以试着用telnet去发送HTTP请求。这时你应该知道TCP和HTTP之间的关系了。
    ryd994
        11
    ryd994  
       2015-07-04 08:46:20 +08:00 via Android
    严格来说,我们传输的数据,其实都是在网线上的电信号而已。然而,如果写个网页也要先从门电路写起的话估计程序员都要上吊了。7层模型是说网络上传输的数据可以在7个抽象层次上考虑。这样每一层都只要完成有限的职责即可,方便思考。比如Web程序员就不需要太多考虑TCP的事(当然优化的时候还是要的,然而不懂TCP,程序也能跑),比如写个网游客户端就不需要考虑ARP查询。


    7层模型只是一种思考方式,方便交流而已。并非网络就一定有7层或者只有7层,全看个人怎么理解。实际的概念是很模糊的。

    能明白浏览器、路由器、交换机、HUB其实是在合作完成同一个任务,但不是在做同样的事情,就可以了。
    jasontse
        12
    jasontse  
       2015-07-04 13:10:09 +08:00 via iPad
    TCP 和 HTTP 并不冲突。和对方主机的 TCP 80 建立连接,上面传的东西是 HTTP。
    你的抓包工具只是识别出里面是 HTTP 的内容,然后以更友好的方式给你看。
    zeroday
        13
    zeroday  
       2015-07-05 09:06:21 +08:00
    HTTP 协议是 Web 工作的核心。

    HTTP 是通过 Internet 进行接受和发送数据的协议。它是在 TCP 协议之上,一般采用 TCP 的80端口。它是一种请求-响应的协议,浏览器客户端发送请求,服务器接受到数据后产生响应。

    在 HTTP 中,客户端通过一个连接和发送请求作为一个事务。服务器不能主动连接客户端,也不能给服务器发送一个回调连接。客户端与服务器都可以中断连接。

    HTTP 协议是一种无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系的。对于 HTTP 服务器,是不能识别两次请求是来自同一个客户端的。为了解决这一问题,Web 程序引入了 Cookie 来维护连接的可持续。
    vtexfan
        14
    vtexfan  
    OP
       2015-07-05 14:53:14 +08:00
    谢谢各位。前面的弄懂了,又产生了很多新问题,目前在啃书中。
    akira
        15
    akira  
       2015-07-05 16:54:51 +08:00
    @vtexfan 这时候,这个数据格式就是由应用程序自己定义的了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3304 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 00:18 PVG 08:18 LAX 17:18 JFK 20:18
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86