关于网络编程的一些问题(HTTP、TCP、什么时候需要关注三次/四次握手的等)

bandaoyu 2018-11-20 10:05:41
1、 HTTP1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。


问:HTTP建立在TCP链接之上,那如果客户端很多的话,岂不是要建立很多TCP链接,千万级的用户数量,那服务器和客户端之间要建立千万的链接吗?

真这样资源消耗得多大!感觉哪里不对,但是又不太明白,请指教




2、HTTP1.1 的短连接模式,是不是每次访问都要创建TCP链接和断开TCP链接?这样不断的创建和消耗TCP链接,资源消耗应该很大吧?



3、创建TCP链接,往往都是直接调用 socket()、bind()、listen()、accept()、send与recv 完成 链接的创建、绑定、监听、收发。

在这个过程中,也不需要了解底下的步骤和实现(什么三次握手,四次握手,也没碰到,都顶层封装好了),是不是在什么地方需要关心三次握手和四次握手?

发现面试官几乎必考三次和四次握手。请问编程中在哪里需要关注三次握手和四次握手并针对处理?

HTTP的长连接和短连接 - 烛秋 - 博客园
...全文
292 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
bandaoyu 2019-03-18
  • 打赏
  • 举报
回复
还有人指教吗
smwhotjay 2018-11-20
  • 打赏
  • 举报
回复

你需要深入学习,而不是发问。问题都很简单。
tcp内核自己实现的握手,并不需要你再写代码握手那些。
bandaoyu 2018-11-20
  • 打赏
  • 举报
回复
引用 3 楼 lee_鹿游原 的回复:
1.你应该问的是千万级用户同时并发吧(类似双11当晚之类的)?
服务器并不是只有一台,当有千万并发的时候,会有负载均衡的方案。(dns负载均衡,LVS , Nginx等优化方案),实际上你访问一个域名,可能会被分配到 server 1至N的其中一台进行数据交互。

2.tcp的创建和断开是会有性能消耗,但这个是要根据业务层去选择是用 长连接还是短连接。

3.tcp 三次握手四次分手,就是比较经典面试题而已,其它的比如: 滑动收发窗口、发送方重传、校验和、定时器等 也会问一些。
太赞了!还有哪些经典的需要注意的问题吗
lee_鹿游原 2018-11-20
  • 打赏
  • 举报
回复
1.你应该问的是千万级用户同时并发吧(类似双11当晚之类的)?
服务器并不是只有一台,当有千万并发的时候,会有负载均衡的方案。(dns负载均衡,LVS , Nginx等优化方案),实际上你访问一个域名,可能会被分配到 server 1至N的其中一台进行数据交互。

2.tcp的创建和断开是会有性能消耗,但这个是要根据业务层去选择是用 长连接还是短连接。

3.tcp 三次握手四次分手,就是比较经典面试题而已,其它的比如: 滑动收发窗口、发送方重传、校验和、定时器等 也会问一些。
bandaoyu 2018-11-20
  • 打赏
  • 举报
回复
引用 1 楼 smwhotjay 的回复:

你需要深入学习,而不是发问。问题都很简单。
tcp内核自己实现的握手,并不需要你再写代码握手那些。
每一个问题都可以用“你应该去看书。”来回答。我只是想知道我关心的那几个问题,而不是整本书,或者从整本书中找那几个答案,另外我还问了,既然三次握手都不用我们操作,为何面试官总是喜欢问链接三次,关闭四次握手这些问题。 不过还是感谢你的回答,谢谢

65,184

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧