TCP和IP协议

发布于:2023-01-16 ⋅ 阅读:(398) ⋅ 点赞:(0)

在这里插入图片描述

巧记方法:please do not tell stupid people anything
物理层–》数据链层–》网络层–》传输层–》会话层–》表示层–》应用层

TCP/IP模型

TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议。
将协议分成四个层次从下至上分别是:链路层、网络层、传输层、应用层

  1. 应用层:http、ftp协议
  2. 传输层:TCP、UDP传输协议
  3. 网络层:IP协议,为数据加上ip地址和其他数据以确定传输目标
  4. 数据链路层:这个层次为待传送的数据加入一个以太网协议头,并进行CRC编码,为最后的数据传输做准备。

TCP连接的建立与终止

三次握手

TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。在TCP/IP协议中,TCP协议提供可靠的连接服务,连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号并交换 TCP窗口大小信息。
](https://img-blog.csdnimg.cn/abcf857e2cb34a49b6a4a114e98603f5.png)

  • 第一次握手:

建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认;

  • 第二次握手

服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态;

  • 第三次握手

客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。

TCP:

重要列举字段:
序列号:(sequences number)
Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记
确认号:(acknowledgement number)
Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
标志位:(Flags)
共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:

  • URG:紧急指针(urgent pointer)有效。
  • ACK:确认序号有效。
  • PSH:接收方应该尽快将这个报文交给应用层。
  • RST:重置连接。
  • SYN:发起一个新连接。
  • FIN:释放一个连接

为什么要进行三次握手

主要原因是网络延迟等缘故,当客户端第一次握手,发送建立连接请求时,遭遇网络超时,客户端已知请求超时,但是服务端并不知道,服务端接收到客户端的连接请求后,回复了客户端的请求,统一建立连接,但是客户端并没有发起建立连接,所以正式建立连接后,并不会回应服务器,更不会向服务器向发送数据,所以服务器就处于等待的状态,浪费了服务资源。
采用三次握手后,由于服务器向客户端发了SYN后得不到确认,就知道客户端并没有要求建立连接

四次挥手

在这里插入图片描述

TCP和UDP
TCP:传输控制协议
UDP:用户数据报协议
从面向对象上来看
TCP:是面向对象的传输协议,客户端和服务端传输数据必须3次握手,双方建立连接才方可进行数据传输
UDP:无连接传输
从连对象上来看
UDP:支持一对一,一对多
TCP:支持一对一

在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到