TCP、UDP、HTTP及Socket的简单讲解

1、TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。

在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。

在传输层中有TCP协议与UDP协议。

在应用层有FTP、HTTP、TELNET、SMTP、DNS等协议。

因此,HTTP本身就是一个协议,是从Web服务器传输超文本到本地浏览器的传送协议。

2、HTTP协议是建立在请求/响应模型上的。首先由客户建立一条与服务器的TCP链接,并发送一个请求到服务器,请求中包含请求方法、URI、协议版本以及相关的MIME样式的消息。服务器响应一个状态行,包含消息的协议版本、一个成功和失败码以及相关的MIME式样的消息。

HTTP/1.0为每一次HTTP的请求/响应建立一条新的TCP链接,因此一个包含HTML内容和图片的页面将需要建立多次的短期的TCP链接。一次TCP链接的建立将需要3次握手。

另外,为了获得适当的传输速度,则需要TCP花费额外的回路链接时间(RTT)。每一次链接的建立需要这种经常性的开销,而其并不带有实际有用的数据,只是保证链接的可靠性,因此HTTP/1.1提出了可持续链接的实现方法。HTTP/1.1将只建立一次TCP的链接而重复地使用它传输一系列的请求/响应 消息,因此减少了链接建立的次数和经常性的链接开销。

3、结论:虽然HTTP本身是一个协议,但其最终还是基于TCP的。

TCP三次、四次握手

相对于SOCKET开发者,TCP创建过程和连接拆除过程是由TCP/IP协议栈自动创建的。因此开发者并不需要控制这个过程。但是对于理解TCP底层运作机制,相当有帮助。

所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。具体流程网上有,在次我不再赘述。三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。

TCP的连接的拆除需要发送四个包,因此称为四次挥手(four-way handshake)。客户端或服务器均可主动发起挥手动作

TCP与UDP的区别

附上一张图片,简单明了👇

Socket是什么呢?

Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

相对于SOCKET开发者,TCP创建过程和连接拆除过程是由TCP/IP协议栈自动创建的。因此开发者并不需要控制这个过程。但是对于理解TCP底层运作机制,相当有帮助。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Socket(套接字)是计算机网络编程中的一个概念,它提供了一种通信机制,使得不同的进程(程序)之间可以在网络上相互通信。Socket 可以看作是一种特殊的文件,它支持在网络上读写数据,通过 Socket 可以实现进程之间的通信和数据交换。 Socket 通常是指一个 IP 地址和一个端口号的组合,这个组合可以唯一标识网络中的一个进程(程序)。在网络通信中,Socket 通常会被分为客户端和服务器端两种类型。客户端负责向服务器发送请求,并等待服务器的响应;服务器端则负责接收客户端请求,并返回相应的数据。 Socket 编程一般分为以下几个步骤: 1. 创建 Socket:使用 socket() 函数创建一个 Socket,指定协议类型(如 TCPUDP)、IP 地址和端口号等参数。 2. 绑定 Socket:使用 bind() 函数将 Socket 绑定到指定的 IP 地址和端口号上,使得其他进程可以通过这个地址和端口号来访问该进程。 3. 监听 Socket:使用 listen() 函数将 Socket 设置为监听状态,等待客户端请求的到来。 4. 接受连接:使用 accept() 函数接受客户端的连接请求,返回一个新的 Socket,用于与客户端进行通信。 5. 发送和接收数据:使用 send() 和 recv() 函数进行数据的发送和接收。 6. 关闭 Socket:使用 close() 函数关闭 Socket,释放资源。 Socket 编程是一种基于网络通信的编程方式,它可以实现进程之间的通信和数据交换,是网络编程领域中非常重要的一种技术。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值