网络协议TCP/IP是什么

这篇具有很好参考价值的文章主要介绍了网络协议TCP/IP是什么。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

​​​​​​

1.什么是TCP/IP协议?它由哪些协议组成?

TCP/IP协议是互联网上最常见的协议之一,它是一组通信协议的集合,包括传输控制协议(TCP)、互联网协议(IP)以及其他相关协议。TCP/IP协议是互联网上数据传输的基础,几乎所有的网络应用都依赖于它。

TCP/IP协议由以下几个协议组成:

  1. IP协议(Internet Protocol):IP协议是TCP/IP协议中最核心的协议,它负责将数据包从源地址传输到目的地址。IP协议是一种无连接的协议,它不保证数据包的可靠传输,也不保证数据包的顺序。
  2. TCP协议(Transmission Control Protocol):TCP协议是一种面向连接的协议,它提供可靠的数据传输服务。TCP协议负责将数据分割成小的数据段,保证数据的可靠传输,还能够控制数据的流量和处理网络拥塞。
  3. UDP协议(User Datagram Protocol):UDP协议是一种无连接的协议,它不保证数据的可靠传输和顺序,但是它的传输速度比TCP协议快。
  4. ARP协议(Address Resolution Protocol):ARP协议负责将IP地址转换成物理地址,以便数据包能够在网络上正确传输。
  5. ICMP协议(Internet Control Message Protocol):ICMP协议是一种网络管理协议,它用于传递网络错误和状态信息,例如ping命令就是通过ICMP协议实现的。
  6. DNS协议(Domain Name System):DNS协议用于将域名解析成IP地址,以便数据包能够正确传输。
  7. FTP协议(File Transfer Protocol):FTP协议是一种文件传输协议,它用于在网络上传输文件。

除了上述的协议外,还有许多其他的协议,如HTTP协议、SMTP协议、POP协议等等,它们都是基于TCP/IP协议的,用于实现不同的网络应用和服务。

2.什么是三次握手四次挥手

TCP连接是指在TCP/IP协议中,建立起两个网络应用程序之间的通信连接。TCP连接提供了可靠的数据传输,可以保证数据的完整性和顺序性。TCP连接的建立和断开过程如下:

2.1.建立连接(三次握手)

TCP连接的建立过程是通过三次握手(Three-way Handshake)来完成的。具体过程如下:

  • 第一步:客户端向服务器发送一个SYN包,表示请求建立连接。SYN包中会携带一个随机生成的序列号(Seq)。
  • 第二步:服务器收到SYN包后,向客户端发送一个SYN+ACK包,表示确认建立连接。SYN+ACK包中会携带一个确认号(Ack),该确认号等于客户端的序列号加1,同时也会携带一个随机生成的序列号。
  • 第三步:客户端收到服务器的SYN+ACK包后,向服务器发送一个ACK包,表示确认建立连接。ACK包中的确认号等于服务器的序列号加1。

第 2 次握手传回了 ACK,为什么还要传回 SYN?

  1. 服务端传回发送端所发送的 ACK 是为了告诉客户端:“我接收到的信息确实就是你所发送的信号了”,这表明从客户端到服务端的通信是正常的。回传 SYN 则是为了建立并确认从服务端到客户端的通信。

2.2.三次握手各自出现问题,会发生什么结果?

第一次握手出现问题:第一个包,即A发给B的SYN 中途被丢,没有到达B

客户端发送SYN请求连接报文,如果迟迟等不到服务器的请求确认报文段,那么就会进行超时重传,具体重传几次,要看tcp_syn_retries内核参数,一般默认是5次。要注意的是,重传的请求连接报文的seq序列号字段还是之前的seq,不会重新生成。

第二次握手出现问题:第二个包,即B发给A的SYN +ACK 中途被丢,没有到达A

服务器发送的第二次握手是连接确认报文段,既包括对第一次握手的ACK确认,同时还有SYN字段表示要建立连接,所以第二次握手也可以成为SYN-ACK报文。所以当第二次握手丢失,客户端迟迟等不到第一次握手的确认,就会触发超时重传机制,进行超时重传;服务器等不到自己SYN连接的确认,也会进行超时重传。客户端和服务器具体的超时重传次数还是由内核参数决定。

第三次握手出现问题:第三个包,即A发给B的ACK 中途被丢,没有到达B

服务器得不到ACK报文,但是ACK报文丢失,ACK 报文是不会有重传的,当 ACK 丢失了,就由对方重传对应的报文。所以当到达服务器的超时重传时间后,服务器会超时重传第二次报文,当达到最大超时重传次数还没得到ACK报文,服务器就会断开连接。

没有连接时为Active状态

2.3.断开连接(四次挥手)

2.3.1TCP连接的断开过程是通过四次挥手(Four-way Handshake)来完成的。具体过程如下:

  • 第一步:客户端向服务器发送一个FIN包,表示请求关闭连接。
  • 第二步:服务器收到FIN包后,向客户端发送一个ACK包,表示确认关闭连接。服务器此时仍可向客户端发送数据。
  • 第三步:服务器完成数据发送后,向客户端发送一个FIN包,表示请求关闭连接。
  • 第四步:客户端收到FIN包后,向服务器发送一个ACK包,表示确认关闭连接。此时TCP连接彻底关闭。

总的来说,TCP连接的建立和断开过程是通过三次握手和四次挥手来完成的。通过这些过程,TCP连接可以提供可靠的数据传输,保证数据的完整性和顺序性,是一种非常重要的网络协议。

2.4.用微信聊天的方式来模拟TCP连接的建立和断开过程

2.4.1TCP连接的建立过程(三次握手):

  1. 客户端:你好,我想和你建立连接,你能收到我的消息吗?(发送一个“打招呼”的消息,表示想要建立连接)

  2. 服务器:嗯,我收到了你的消息,我也想和你建立连接,你能收到我的回复吗?(回复一个“打招呼”的消息,并询问能否收到)

  3. 客户端:是的,我收到了你的回复,我们现在可以开始建立连接了。(回复一个“确认”的消息,表示同意建立连接)

        此时,客户端和服务器之间的TCP连接已经建立成功,可以开始进行数据传输了。

2.4.2TCP连接的断开过程(四次挥手):

  1. 客户端:我想断开和你的连接了,我不再发送消息了,但我还能接收你的消息。(发送一个“再见”的消息,表示想要断开连接)

  2. 服务器:好的,我收到了你的消息,我也不会再发送消息了,但我还能接收你的消息。(回复一个“再见”的消息,表示同意断开连接)

  3. 服务器:我已经把所有的消息都发送完了,现在准备关闭连接。(发送一个“好的,我已经发送完消息了”的消息,表示准备关闭连接)

  4. 客户端:好的,我收到了你的消息,我也已经把所有的消息都发送完了,现在准备关闭连接。(回复一个“好的,我已经发送完消息了”的消息,表示同意关闭连接)

        此时,客户端和服务器之间的TCP连接已经断开成功,不再进行数据传输。

2.5.为什么TCP不是两次握手或四次握手

2.5.1.二次握手的过程:

  1. A 发送同步信号SYN + A's Initial sequence number
  2. B发送同步信号SYN+B's Initial sequence number+B's ACK sequence number

        这里有个问题,A与B就A的初始序列号达成了一致,假设这里是1000.但是B无法知道A是否已经收到自己的同步信息,如果这个同步信息丢失了,A和B就B的初始序列号将无法方达成一致。

  • 两次握手问题:

    • 如果只进行两次握手,即客户端发送连接请求,服务器回复确认,看似连接建立了。但这种简化过程存在严重问题:若服务器的确认消息在网络中滞留,客户端会误以为连接已建立,而实际上服务器并未意识到这一连接。这可能导致资源浪费或数据传输异常,因此需要第三次握手确认双方都准备好建立连接。

2.5.2.四次握手过程:

  1. A发送同步信息SYN+A’s Initial sequence number
  2. B 确认收到A的同步信号,并记录 A’s ISN 到本地,命名 B’s ACK sequence number
  3. B发送同步信号SYN + B’s Initial sequence number
  4. A确认收到B的同步信号,并记录 B’s ISN 到本地,命名 A’s ACK sequence number

很显然2和3 这两个步骤可以合并,只需要三次握手,可以提高连接的速度与效率。

  • 四次握手问题:文章来源地址https://www.toymoban.com/news/detail-861487.html

    • 如果采用四次握手,即在断开连接时增加额外的握手步骤,会导致不必要的复杂性和开销。TCP的设计考虑了在关闭连接时需要确保双方都知道对方已准备好断开连接,同时也需要确认数据的完整传输和状态。因此,四次挥手是为了实现这些目标,确保数据的完整性和连接的正常关闭。

3.简单的Java示例

3.1.服务端代码:

import java.io.*;
import java.net.*;

public class TCPServer {
    public static void main(String[] args) {
        try {
            // 创建一个ServerSocket,监听端口9999
            ServerSocket serverSocket = new ServerSocket(9999);

            // 等待客户端连接
            System.out.println("等待客户端连接...");
            Socket clientSocket = serverSocket.accept();
            System.out.println("客户端已连接");

            // 获取输入流
            BufferedReader input = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

            // 读取客户端发送的数据
            String inputData = input.readLine();
            System.out.println("收到数据: " + inputData);

            // 关闭连接
            serverSocket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3.2.客户端代码:

import java.io.*;
import java.net.*;

public class TCPClient {
    public static void main(String[] args) {
        try {
            // 连接到服务器
            Socket socket = new Socket("localhost", 9999);

            // 获取输出流
            PrintWriter output = new PrintWriter(socket.getOutputStream(), true);

            // 发送数据
            String message = "Hello, server!";
            System.out.println("发送数据: " + message);
            output.println(message);

            // 关闭连接
            socket.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

到了这里,关于网络协议TCP/IP是什么的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【HTTP详解】HTTP协议、TCP/IP、TCP协议究竟是什么?

    部分资料来源: 《图解HTTP》 HTTP(Hypertext Transfer Protocol) 是一种用于在网络上传输数据的协议 ,它是万维网的基础。HTTP使用 客户端-服务器模型 ,客户端向服务器发送请求,服务器返回响应。HTTP使用 TCP 作为其 传输协议 ,它默认使用端口80。 TCP/IP是一个 协议族 ,包含一

    2024年02月05日
    浏览(54)
  • 【网络协议】TCP/IP 协议

    1、TCP/IP 模型 TCP/IP 协议模型,包含了一系列构成互联网基础的网络协议,是 Internet 的核心协议。 基于 TCP/IP 协议栈可分为四层或五层,转换为 OSI 参考模型,可以分为七层,分别如下图所示: 通常我们所说的都是基于 TCP/TP 五层模型。 2、TCP/IP 协议栈每一层功能 应用层:H

    2024年02月12日
    浏览(65)
  • 网络编程——TCP/IP协议族(IP协议、TCP协议和UDP协议……)

    1、IP协议简介 IP协议又称 网际协议 特指为实现在一个相互连接的网络系统上从源地址到目的地传输数据包(互联网数据包)所提供必要功能的协议,是网络层中的协议。 2、特点 不可靠 :它不能保证IP数据包能成功地到达它的目的地,仅提供尽力而为的传输服务 无连接 :IP 并不

    2024年02月13日
    浏览(75)
  • 【网络】- TCP/IP四层(五层)协议 - 网际层(网络层) - 网际协议IP

    这篇文章主要介绍TCP/IP协议的网际层,上一篇文章介绍了数据链路层,数据链路层的主要作用是 在互连同一种数据链路的节点之间进行包传递 。而网际层的主要作用是 实现终端节点(即使不在同一网络)的通信 。 网际层 有时也称 网络层 ,但由于网际层的作用中包含了“实现

    2024年02月06日
    浏览(58)
  • Java中网络的基本介绍。网络通信,网络,ip地址,域名,端口,网络通信协议,TCP/IP传输过程,网络通信协议模型,TCP协议,UDP协议

    - 网络通信 概念:网络通信是指 通过计算机网络进行信息传输的过程 ,包括数据传输、语音通话、视频会议等。在网络通信中,数据被分成一系列的数据包,并通过网络传输到目的地。在数据传输过程中,需要确保数据的完整性、准确性和安全性。常见的网络通信协议有T

    2024年02月10日
    浏览(71)
  • 网络:TCP/IP协议

    1. OSI七层参考模型        应用层         表示层         会话层         传输层         网络层         数据链路层         物理层 2. TCP/IP模型         应用层         传输层         网络层         数据链路层         物理层 3. 各链路层对应的名称    

    2024年02月15日
    浏览(78)
  • 【网络原理】TCP/IP协议

    目录 1.应用层 2.传输层(核心问题) 2.1 UDP协议 2.1.2 UDP的特点 2.1.3 基于UDP的应用层协议 2.2 TCP协议(重点内容) 2.2.1 TCP/IP 协议含义 2.2.2 TCP协议端格式: 2.2.3 TCP的特点 2.3 TCP原理 2.4 确认应答机制(安全机制) 2.5 超时重传机制(安全机制) 2.5.1 数据直接丢了,接收方没

    2023年04月13日
    浏览(54)
  • TCP协议IP网络音柱

    SV-704CT TCP协议I P网络音柱 一、描述  SV-704CT是深圳锐科达电子有限公司的一款壁挂式 IP网络有源音柱 ,具有10/100M以太网接口,可将网络音源通过自带的功放和喇叭输出播放,其采用防水设计,功率可以从60W到120W。SV-704CT作为网络广播播放系统的终端,可用于需要广播播放的

    2024年02月07日
    浏览(52)
  • 【网络原理】TCP/IP协议(续)

    目录 🔥网络层重点协议(IP 协议) 一、地址管理 1.如何解决上述地址不够用问题? 2.NAT 机制 2.1 NAPT 2.2 在 NAT 背景下如何通信? 3.IPv6 4.IP地址 4.1 ABCDE类 4.2 子网掩码 4.3 特殊的 IP 地址 二、路由选择 1.路由器 1.1 网关 1.2 路由 🌴数据链路层重点协议 1.以太网 1.1 认识以太网

    2023年04月19日
    浏览(70)
  • 【网络】- TCP/IP四层(五层)协议 - 网际层(网络层) - IP地址

    上篇文章简单介绍了网际协议IP。网际协议 IP 大致分为三大作用模块, ①IP寻址、 ②路由(最终节点为止的转发) 、③IP分包与组包。 这篇文章主要详细介绍IP地址的基础知识。包括IP地址的组成、分类、广播地址、多播、子网掩码等。 在用 TCP/IP 通信时, 用 IP地址 识别主

    2024年02月06日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包