网站首页 包含标签 tcp 的所有文章

  • HTTP和TCP的关系和区别

    关系: HTTP建立在TCP之上:HTTP是一个应用层协议,而TCP是传输层协议。HTTP通常使用TCP作为它的传输层协议,以在网络上传输数据。HTTP与TCP之间的关系可以类比为在实体之上建立一个通信通道。 HTTP利用TCP的可靠性:TCP提供了可靠的、面向连接的数据传输。HTTP利用TCP的可靠性来确保数据的正确传递,包括数据的分段和重新组装、错误检测和重传等。 区别: 层次:TCP是传输层协议,负责在两台计算机之间建立连接、可靠地传输数据流,以及处理数据分段和重传等传输细节。HTTP是应用层协议,负责定义数据的格式和如何在客户端和服务器之间传输数据。 功能:TCP关注于数据传输的可靠性和流控制,而HTTP关注于定义如何呈现和传输文档、图像、视频等内容。HTTP通过请求-响应模型允许客户端请求网络资源,并服务器响应这些请求。 端口:TCP使用端口来标识不同的应用程序或服务,允许多个不同的应用程序在同一台计算机上共享网络连接。HTTP默认使用TCP端口80(HTTP)或443(HTTPS)。 通信模式:TCP是一种点对点的通信协议,即两台计算机之间的通信。HTTP是一种客户端-服务器通信模式,客户端发送请求,服务器返回响应。 状态:TCP是无状态的协议,它不保留关于连接的持久状态信息。HTTP也是无状态的,每个HTTP请求和响应之间是相互独立的,不保留客户端之间的状态。 ...

    2023-11-11 214
  • TCP和UDP区别是什么

    连接导向 vs 无连接 TCP是一种面向连接的协议,它在数据传输前需要建立连接,确保数据的可靠性和有序性,然后在传输完成后释放连接。 UDP是一种无连接的协议,它不需要在传输数据前建立连接,也不维护连接状态,数据包之间相互独立,不会保证数据的可靠性和有序性。 可靠性 TCP提供可靠的数据传输。它使用序号、确认和重传机制来确保数据包的正确性,确保数据不丢失和按顺序传输。 UDP不提供可靠性。它只是简单地将数据包从源发送到目标,不提供确认、重传或错误检查。 数据量 TCP适用于大量数据的可靠传输,如文件传输、网页访问等。 UDP适用于需要快速传输和可以容忍一些数据丢失的应用,如实时音视频流、在线游戏等。 开销 TCP协议在建立和维护连接时有较高的开销,因为它需要进行三次握手、四次挥手等操作,以确保可靠性。 UDP协议的开销较低,因为它不涉及连接的建立和维护。 适用场景 TCP适用于需要可靠数据传输和流控制的场景,如HTTP、FTP等传统应用。 UDP适用于对实时性要求较高、可以容忍一些数据丢失的应用,如音频/视频流、在线游戏、DNS查询等。 总结 ...

    2023-11-10 176
  • 什么是IO多路复用

    首先了解下网络套接字(socket)的概念,可以把它简单理解为 TCP 网络层中应用层和传输层之间的一个抽象层: 客户端和服务端建立抽象的网络连接时,TCP/IP 层需要做很多操作,如各种报文,消息头以及消息结构的封装。 而 socket 把这些复杂的操作,抽象成了几个简单的接口,供应用层来调用以实现进程在网络中通信。 socket网络通信协议层 TCP/IP 只是一个抽象的协议栈,网络连接时要具体实现,同时还得对外提供具体的接口,这就是 socket 接口。当一个请求连接到服务端时,可以把这个连接看作是 socket 节点连接。 举个例子,模拟一个服务器处理 3 个 socket 连接,在没有 IO 多路复用之前,我们的客户端与服务端是这么进行连接的: 一次只能连接 1 个 socket 永久阻塞直到 socket 连接有数据可读 不难发现,如果一个服务器有数以万计的请求时,处理效率将非常低下。 这时,IO 多路复用登场了,首先给出一个故事来帮助我们理解什么是 IO 多路复用:假设你是一个老师,让 30 个学生解答一道题目,然后检查学生做的是否正确,你有下面三个选择: 第一种选择:学生开始做题之前,由自己判断可能会先做完题目,然后举手。你负责检查先举手的学生,等着这个学生把题目做完,中间哪也不去,直到这个学生完成题目后,再检查下一位举手的学生。这时,如果有一位学生解答不出来,全班都会被耽误。这就是没有 IO 多路复用的情况。 第二种选择:你创建 30 个分身,每个分身检查一个学生的答案是否正确。这种类似于为每一个用户创建一个进程或者线程处理连接。这种方式看起来效率也很高,但连接数很多时,频繁创建进程或线程,资源十分有限。 第三种选择,你站在讲台上等,谁解答完谁举手。这时 C、D 举手,表示他们解答问题完毕,你下去依次检查 C、D 的答案,然后继续回到讲台上等。此时 E、A 又举手,然后去处理 E 和 A… 这就是 IO 复用模型,Linux下的select、poll 和 epoll 就是这样做的。比如,epoll 实现时,首先将用户 socket 对应的文件描述符(file descriptor,简称 fd)注册进 epoll,然后 epoll 帮你监听哪些 socket 上有消息到达,这样就避免了大量的无用操作。 此时的 socket 应该采用非阻塞模式,即收发客户消息不会阻塞(可以理解为大部分时间下,老师不再监听某个特定的学生做作业)。这样,整个过程只在调用 select、poll、epoll 这些调用的时候才会阻塞,整个进程或者线程就被充分利用起来。 ...

    2023-11-03 178

联系我们

在线咨询:点击这里给我发消息

QQ交流群:KirinBlog

工作日:8:00-23:00,节假日休息

扫码关注