2017-09-26 17:08:53 2606次浏览 1条回答 0 悬赏 100 金钱

socket2.jpg

这张图是TCP/IP协议族,看了很多Tcp,http的知识,发现很糊涂,有一些问题不懂:
1:我们运行http://www.aaa.com/test/index 这个路由(test控制器下的index方法)是不是http协议?
2:我们知道http协议是基于tcp协议的,可是从图上来看,tcp和http之间有个socket,是不是如果有一个http协议他默认是不是就会经过socket与tcp进行通信?就是说我简单的http协议他也是通过socket的吗?
3:如果简单的http协议他也是通过socket的,那他和我们经常说的socket编程区别何在?

补充于 2017-09-27 15:21

以前有个概念很容忍搞不清楚。就是为什么Http是无状态的短连接,而TCP是有状态的长连接?Http不是建立在TCP的基础上吗,为什么还能是短连接?现在明白了,Http就是在每次请求完成后就把TCP连接关了,所以是短连接。而我们直接通过Socket编程使用TCP协议的时候,因为我们自己可以通过代码区控制什么时候打开连接什么时候关闭连接,只要我们不通过代码把连接关闭,这个连接就会在客户端和服务端的进程中一直存在,相关状态数据会一直保存着。

最佳答案

  • johnny1991 发布于 2017-09-27 00:50 举报
    • 是http协议
    • socket是应用层协议和tcp/ip层通信的媒介,所有的应用层协议都是通过socket与tcp/ip通信的
    • socket编程绑定ip地址与port,而没有定义其他的协议,以http为例
    • 首先,http的1,2,3,4,5这些状态是socket没有的
    • 其次,http头部信息里面比如是get,还是post请求,这也是socket没有的
    • 再次,http头部里面的http缓存机制,也是socket所没有
    • 等等,总结一句话,http协议基于socket编程之上又封装了自己的规则,所以所有关于http头部信息都是socket所没有的,其他协议类同
    6 条回复
    回复于 2017-09-27 08:47 回复

    所有的应用层协议都是通过socket与tcp/ip通信的 ,如果是这样的话,那不是所有的协议都是长链接了??可是http好像是短链接

    回复于 2017-09-27 10:18 回复

    http基于tcp,理论上来说应该是长连接,正常情况下http协议每次请求网页的时候,一次就可把数据加载全,所以结束的时候就已经发送fin请求,连接就结束了;特殊情况下比如网站上播放视频,就是http长连接

    回复于 2017-09-27 11:50 回复

    运行http://www.aaa.com/test/index
    这个是http协议 那这个时候TCP/IP协议族所有层是不是都要工作

    回复于 2017-09-27 13:32 回复
    回复于 2017-09-27 14:37 回复

    谢谢 再问个问题 我们使用socket编程的时候 那这个时候http协议是否存在,或者说应用层这个时候是哪种协议??

    回复于 2017-09-27 15:05 回复

    直接使用socket编程和http没有任何关系的,它使用的tcp/udp协议

    没有找到数据。
您需要登录后才可以回答。登录 | 立即注册
xyf90314
副总裁

xyf90314

注册时间:2015-03-04
最后登录:2023-03-13
在线时长:95小时23分
  • 粉丝21
  • 金钱5257
  • 威望40
  • 积分6607

热门问题