Socket与HTTP解析

本文深入介绍了网络基础、TCP/IP协议,包括TCP的三次握手与四次挥手过程,以及UDP协议的特点。此外,详细阐述了HTTP协议,包括其定义、特点、URL结构、请求响应过程、状态码以及GET和POST请求的区别。通过对这些基础知识的解析,有助于理解网络通信的本质。
摘要由CSDN通过智能技术生成

1.网络基础

网络分层:计算机网络分层模型有两种

  • OSI参考模型
  • TCP/IP参考模型

网络层:根据IP查找到目的地址的主机

运输层:通过端口把数据发送给目的主机,实现进程间通信

2.端口

端口规定有16位,及计算机有2的16次方65536个端口。

3.C/S架构

定义:即客户端/服务端,软件体系架构

作用:利用客户端和服务端的硬件资源,将任务合理的分配到客户端和服务端来实现,降低开销

Socket套接字就是这种软件架构,套接字客户端和套接字服务器

Socket的使用基于TCP和UDP协议

4.TCP协议

定义:TCP协议即传输控制协议,是一种传输层通信协议
特点:面向连接、可靠、全双工通信、面向字节流

  • 面向连接:是指TCP传输数据时双方必须建立连接,传输完成时必须释放连接
  • 可靠:是指,传输的数据无差错、不丢失、不重复、按顺序到达
  • 全双工通信:是指只要建立连接成功后,在之后任何时候都可发送数据
  • 面向字节流:流指的是流入进程或者从进程流出的字符序列。当TCP传输的数据过大时,TCP报文长度有限,所以或将其分割成几个数据块传输,但是因为有可靠性的保证,所以接收方会按顺序收到数据块然后将其组装成完整的数据。所以看起来像是TCP传输的是字节流一样。

5.TCP三次握手连接

TCP客户端和服务端连接需要经过三次握手才可以

  • 第一次握手:客户端A向服务端B发送连接请求,将SYN的值置为1,同时随机产生seq的值x,然后客户端进入SYN_SEND状态
  • 第二次握手:服务端B收到请求后,通过SYN=1知道客户端想连接,然后服务端B向客户端A发送确认连接,发送SYN=1,ACK=1,ack=x+1(第一次握手的seq值+1),seq=y(随机产生seq的值),然后服务端B进入到SYN_RCVD状态
  • 第三次握手:客户端A收到服务端B发送的确认消息后,检验ACK是否为1,ack是否是第一次握手是发送的seq值+1,如果验证通过,则向服务端B发送确认信息ACK=1,ack=y+1,seq=x+1。然后客户端A进入ESTABLISHED状态。服务端收到后确认信息是否正确,如果正确进入ESTABLISHED状态。

完成三次握手后,接下来可以在任何时刻发送和接收数据

三次握手中的任何一次没有成功,都要重新发送

为什么要三次握手:

1.在连接时可能会出现这样的情况,客户端发送了连接请求,但是该信息在某个网络节点滞留时间过长,客户端已经连接超时释放了该连接后,该连接请求到达服务端后

2.该信息其实是一个过时失效的信息,所以当服务端收到信息后,以为客户端需要建立连接,于是服务端会向客户端发送确认信息。

3.如果没有采用三次握手,就会出现服务端认为是连接并且建立连接,等待客户端发送数据,但是客户端并没有要求建立连接,是不会向服务端发送数据的,所以服务端就会白白的等待客户端发送数据,这样就浪费了服务端的资源。

6.TCP释放连接

TCP释放连接时需要四次挥手过程(数据传输完成后,双方都可以释放连接)

  • 第一次挥手:主机1向主机2发起释放连接请求FIN=1,seq=u,主机1进入FIN_WAIT-1状态
  • 第二次挥手:主机2收到主机1的释放请求后,回复确认释放信息ACK=1,ack=u+1,seq=v,主机2进入CLOSE_WAIT状态
  • 第三次挥手:然后主机2向主机1发送释放连接请求FIN=1,AC
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值