TO luodi 你的Socket,你的TCP/IP不是操作系统实现的是那里来的?是天上掉下来的?to supersonics: ip包的包头里面有一个源地址,源端口,一个目的地址,目的端口。server会根据源地址,源端口来response.实现tcp/ip的操作系统知道那一个端口对应那一个进程/线程。随便找一本讲网络编程的书看看就明白了。
to luodi: ie是根据返回的数据来选择由哪一个窗口所在线程处理的吧。 那么我想,肯定返回的数据中含有一个与本地某个数据相同的唯一标识。 关键是这个标识是否会变(由于http协议是非连接的)。 很有可能会变(原因如下:我先点击连接到csdn,后来等了2秒钟,没反应,又转到sina;这时csdn server返回了请求,显然这时浏览器不该处理csdn来的数据,如果根据是那个改变的标识,那么一切迎刃而解。)
to lovesnoopy: 对于你13:12的回答,我想是不是你的那个端口就对应我13:15回答所说的唯一标识呢? (虽然上过网络课,可是这些东西一联系实际,就用不上了)。
所需文件:index.html&test1.jsp&test2.jsp.
其中:index.html含有到test1.jsp和test2.jsp的连接。
test1和test2分别含有一个100000级别的循环。
步骤:
1. 进入index.html,称为A;
2. CRTL+N复制index.html称为B;
3. 点击A的test1.jsp。
4. 进行3的同时,点击B的test2.jsp。
5. 结果A,B分别进入test1.jsp和test2.jsp。
完毕。
以上试验可以说明,在服务器端是知道这两个浏览器的不同的。
否则的话,肯定A,B会进入同一个画面(相当于index.html点击test1.jsp的超连接后,不等“返回”迅速点击test2.jsp)。
1.client和server的交互是线程之间的1对1。
2.client到server的信息中含有sessionid。server端的不同线程根据sessionid去取得session内容(由于A,B是同一个sessionid,自然就取得同一个session的内容)。
敬请指正。
至于上面的例子,那是本地操作系统的功劳,跟server不搭嘎。
那么,本地操作系统根据什么来把服务器返回的资料分配给不同的浏览器呢?
(它怎么知道该让A->test1.jsp,B->test2.jsp).
你的Socket,你的TCP/IP不是操作系统实现的是那里来的?是天上掉下来的?to supersonics:
ip包的包头里面有一个源地址,源端口,一个目的地址,目的端口。server会根据源地址,源端口来response.实现tcp/ip的操作系统知道那一个端口对应那一个进程/线程。随便找一本讲网络编程的书看看就明白了。
ie是根据返回的数据来选择由哪一个窗口所在线程处理的吧。
那么我想,肯定返回的数据中含有一个与本地某个数据相同的唯一标识。
关键是这个标识是否会变(由于http协议是非连接的)。
很有可能会变(原因如下:我先点击连接到csdn,后来等了2秒钟,没反应,又转到sina;这时csdn server返回了请求,显然这时浏览器不该处理csdn来的数据,如果根据是那个改变的标识,那么一切迎刃而解。)
对于你13:12的回答,我想是不是你的那个端口就对应我13:15回答所说的唯一标识呢?
(虽然上过网络课,可是这些东西一联系实际,就用不上了)。
针对你最新的回答(13:28),这个标识对servlet该是不可见的吧。
感谢以上所有热心人的回答,特别是luodi.
虽然分数没什么用,我想给不给和给了有没有用应当是两回事。
的确不是关键.这个问题到此为止。to supersonics:
你说的这个标号是什么?我不理解。在http之上编程不需要了解底层的实现。
这样讲:假设你自己构造一个http请求,sendto server, web server是不知道这个请求是你发的还是浏览器发的。
HTTP是无连接的意思是两个http请求是独立的,他们之间没有任何关系,所以netscape才发明了cookie技术来记录request之间的关系。cookie是http header里的一项。session的概念就是用cookie来实现的。
这个标识就是让server用来判断发送到client上那个端口(或之类的东西)的。
再次谢谢你的关注。