网络:Socket、TCP/IP、HTTP

一、OSI的7层从下到上

  • Open System Interconnection
  • 7、6、5、4 层定义了应用程序的功能
  • 3、2、1 层主要面向数据流
1.物理层
2.数据链路层
3.网络层( IP协议)
4.传输层(TCP协议)
5.会话层
6.表示层
7.应用层(HTTP协议)

二、Socket、TCP/IP、HTTP 关系

  • socket 则是对 TCP/IP 协议的封装和应用。TPC/IP 协议是传输层协议,主要解决数据 如何在网络中传输

    • Socket 本身并不是协议,而是一个调用接口 (API),通过Socket,我们能使用 TCP/IP协议。
  • TCP/IPHTTP 协议的关系:

  • HTTP 就像快递单,有了它快递员才知道你到送货去哪里,谁接收,而TCP就像那条路,快递员要通过这条路送货去那里

三、TCP的三次握手

第一次握手:
  • 客户端发送 SYN包 到服务器,进入数据发送(SYN_SEND)状态,等待服务器确认
第二次握手:
  • 服务器 SYN包 后,发送 SYN+ACK(确认)包,此时服务器进入 数据接收(SYN_RECV)状态
第三次握手:
  • 客户端收到SYN+ACK(确认)包后,向服务器发送ACK(确认)包,客户端和服务器进入建成状态

established: 已经建立的

  • 握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据
  • 理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去
  • 服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”

四、建立Socket连接

  • 建立 Socket 连接至少需要一对套接字:客户端Socket,服务器端Socket
    • 套接字:源IP地址和目的IP地址以及源端口号和目的端口号的组合

套接字之间的连接过程分为三个步骤:

1.服务器监听:
  • 服务器Socket 处于实时等待连接的状态
    • 并不具体的定位客户端套接字
2.客户端请求:
  • 客户端Socket 提出连接请求
    • 客户端Socket 必须指出服务器端套接字的地址和端口号
3.连接确认:
  • 服务器Socket 监听到连接请求时,立即响应请求:建立一个新的线程,把 服务器Socket 的描述发给客户端,若客户端确认,双方建立连接。
    • 服务器Socket 继续处于监听状态

五、TCP和UDP的区别

1.TCP面向链接,UDP非面向连接
TCP的三次握手最大程度保证了,数据传输的可靠性

2.UDP数据传输速率更快
因为不必进行三次握手

你可能感兴趣的:(网络:Socket、TCP/IP、HTTP)