您的位置:首页 > 理论基础 > 计算机网络

读计算机网络应用层心得体会

2013-09-22 22:50 316 查看
今天读计算机网络自顶向下方法这本书的应用层协议Http时结合曾经做过的一个Android的项目,对Http通信有了更深入的了解,记录如下:

什么是Socket。

Socket是套接字这大家都知道,那么这个东西具体是干吗用的呢,他存在的目的是什么呢,我读完计算机网络书中的应用层协议Http后有了自己的理解,首先Http是建立在运输层TCP协议上的一个协议,Http可以通过某种手段对TCP协议进行一些参数的设置,以达到对TCP协议的不完全控制,这里说的某种手段就是Socket,其实Socket的相当于TCP对上层服务提供的一个API(程序编程接口),上层服务通过调用这个Socket接口里的函数对下层的TCP协议进行一小部分的设置,如设置TCP是否为持久链接,超时等等这些东西,由于Socket并没有提供对TCP如何进行数据传输的控制,所以Http也不可能控制TCP具体的数据传输机制。

总结:Socket是TCP提供给上层服务的一个可调用的API,上层服务通过Socket对TCP进行部分控制和设置。

什么是一个TCP连接,以及什么是持久连接什么是非持久连接

其实这一点相对来说比较简单,但是他的主要作用是承接上面的心得一,以及过度到下面的心得三

一个TCP连接对应了一对socket套接字,也可以说是对应了一个主机上的某个端口号,以发送Http请求为例,当客户定义一个HttpClient的对象httpClient时候,并执行httpClient.execute(URL url)方法时,底层的实现是Java编程中的Socket编程,也就是说底层会为这个HttpClient分配一个端口号来建立一个socket连接(也就是TCP连接),如果你对这个HttpClient进行相应的设置使得为他提供服务的下层TCP协议不是一个持久连接的话,那么当获取到HttpResponse的时候,这个TCP连接就会断开,如果你设置为持久连接,那么当你用httpClient再次执行execute方法向服务器发送请求的时候,底层使用的是同一个TCP连接,而不需要重新进行三次握手进行连接,这就是TCP持久连接和非持久连接的区别。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: