好友
阅读权限10
听众
最后登录1970-1-1
|
沉默的小光
发表于 2016-7-21 15:53
本帖最后由 Cizel 于 2016-7-24 16:41 编辑
以下是我的个人思路,可能和实际情况不完全相同,和大家交流网络层
知道一点网络通信知识的都应该知道,网络按五层划分最底层为物理层,没什么好说的;第二层为链路层,接触到最多的是ARP协议,与这个关联也不多;第三层即是网络层,网络层有一个重要的协议——IP。IP可以用于定位到某台主机上,与之连接通信,传过来的数据包里会标明发包人的IP地址。很明显,服务器在没有打开包的情况下,它是不知道这个包到底是TCP还是UDP的或是别的,服务器应当对网卡上所有的包进行检查,找到其中的TCP包(大部分网络通信协议都是基于TCP的)再进行解析。网卡在接收到了一定数据之后,驱动程序会中断CPU,以完成底层的触发,由更层的程序对产生中断的数据包进行处理。也就是通常的抓包的过程。
传输层
传输层是网络分层五层模型中的第四层,其中比较重要的协议是TCP协议。TCP定义了一个字段端口,用于区分同一台主机中的应用程序,这就是为什么每个服务器发布的网站在访问时都要带上端口。如果不设置的话可以默认使用80。在对数据包第四层解析时,挑出服务器需要响应的特定端口的包。到了这一层,要构建服务器,首先要按TCP层协议封装出一套套接字,以便完成连接、数据传递、断开等工作。在这一层上有很多已经实现好的socket,通过对数据包的分析、控制、发送,自己也能实现一套。
应用层
这一层已经是网络五层模型中的最高层了,其中用到的比较重要的协议是HTTP协议。HTTP协议在完成html的请求或是响应时起到重要作用。通过上一层实现好的socket,就可以直接把HTTP中的数据封装成一个结构(类实例),里面相应字段都可以直接由数据包中的字段填充。在发包前,包中的data就是要发送的html代码、或是其它资源,这部分内容是服务器可以控制的。到了这里就很好理解动态网页是怎样产生的了。java中先进行编译,产生类文件,再运行之后,得到相关的数据以填充data字段,最后服务器进行封装发送。
暂时写这么多,以后有机会再补充,欢迎大家说出自己的想法,有不正确的地方请不吝指教。
|
|
发帖前要善用【论坛搜索】功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。 |
|
|
|
|