网络高频概念理解:TCP/IP、握手通道、HTTP三次握手

  • HTTP:HyperText Transfer Protocol,超文本传输协议,菜鸟教程

    1. 是一种无状态的请求/响应的网络传输协议。基于TCP/IP通信协议(通过一个可靠的链接)传递数据。
    2. HTTP协议工作于客户端-服务端架构。HTTP客户端(浏览器)通过URL向HTTP服务端(WEB服务器)发送请求。默认端口号80.
    3. HTTP无连接、媒体独立、无状态。

    在这里插入图片描述

    CGI Program(WikiPedia):Common Gateway Interface(CGI) is an interface specification for web servers to execute programs like console applications running on a server thate generates web pages dynamically.

  • TCP/IP:Transmission Control Protocol/Internet Protocol,菜鸟教程

    传输控制协议/网际协议,定义主机如何接入互联网以及数据如何在Internet上进行通讯的协议。

    1. TCP用于应用程序之间的通信,占用通信线路,建立全双工通信;负责将数据分割并装入IP包,然后在他们到达之后重新组合它们;
    2. IP用于计算机之间的通信,是无连接的通信协议;负责将包发送至接受者;
  • HTTP请求与TCP连接

    HTTP不存在连接这样一个概念,只有HTTP请求、HTTP响应这两个概念。请求、响应都是一个数据包,中间需要一个传输通道,TCP连接就是这个通道。

  • TCP连接

    所谓“连接”,是客户端和服务端的内存里保存的一份关于对方的信息,如ip地址、端口号等。

  • TCP三次握手

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

    在这里插入图片描述

    1. 第一次握手:建立连接,客户端A发送SYN=1、随机产生的Seq=client_isn的数据包到服务器B,等待服务器确认;
    2. 第二次握手:服务器B收到请求后确认联机(可以接受数据),发起第二次握手请求,[SYN, ACK]: SYN=1、ACK=(A的Seq+1),随机产生Seq=client_isn的数据包到A;
    3. 第三次握手:A收到后检查ACK是否正确,若正确,A会再发送确认包ACK=(B的Seq+1),服务器B收到后确认Seq值与ACK值,若正确,则建立连接。

    经过三次握手的原因,是为了防止服务端开启一些无用的链接:客户端发送一个请求,服务端收到之后如果直接创建一个链接,返回内容给客户端,因为网络传输原因,这个数据包丢失了,客户端就一直接收不到服务器返回的这个数据,超过了客户端设置的时间就关闭了,那么此时服务端是不知道的,它的端口就会开着等待客户端发送实际的请求数据,服务的这个开销就浪费了。

  • TCP四次握手

    又称为改进的三次握手(Four-way handshake),用于拆除TCP连接。

    socket编程中,任何一方执行close()操作即可产生挥手操作。

  • SYN-synchronous建立联机
  • ACK-acknowledgement确认
  • Seq-sequence number顺序号码
  • 握手通道

    握手通道,是HTTP协议中客户端和服务端通过"TCP三次握手"建立的通信通道。

  • 短连接

    HTTP协议完成数据交互后就释放了这条握手通道。

  • Socket编程

    Socket时对TCP/IP协议族的一种封装,时应用层与TCP/IP协议族通信的中间软件抽象层。

    Socket还可以认为时一种网络间不同计算机上的进程通信的一种方法,利用三元组(ip地址、协议、端口)就可以唯一标识网络中的进程,网络中的进程通信可以利用这个标志与其他进程进行交互。

  • References

  1. http请求是如何先建立的三次握手?

猜你喜欢

转载自blog.csdn.net/The_Time_Runner/article/details/105801487