• TCP协议学习记录


    TCP协议学习记录

    简述

    对TCP有诸多疑惑的地方:
    1、TCP和socket的关系
    2、TCP客户端和服务端如何区分
    3、TCP连接的两端,端口号需要一致吗

    什么是socket

    一种编程抽象
    编写程序时,利用socket可以使用TCP;假设现在已经将TCP协议的规范用代码编写好了,只需要去使用它,就可以通过socket去使用;

    TCP和socket的关系

    socket为应用程序提供了一种使用TCP和其他网络协议进行通信的方式

    TCP的客户端和服务端是基于什么来决定

    tcp的连接需要由一方来发起,发起方需要知道对方的IP地址和端口号。
    同时,对端也需要能够接受,这是一个等待的过程(监听)。
    发起方为客户端,等待方为服务端。

    假如有两个设备,建立了TCP连接,可以两个同时都是客户端和服务端吗

    TCP协议的通信需要预先建立一个通信连接。
    三次握手建立连接,四次挥手断开连接。
    三次握手:
    1、客户端→服务端:SYN
    2、服务端→客户端:SYN/ACK
    3、客户端→服务端:ACK 然后就建立好连接。
    四次挥手:
    1、A端→B端:FIN
    2、B端→A端:ACK
    3、B端→A端:FIN/ACK
    4、A端→B端:ACK
    断开连接的发起方既可以是客户端,也可以是服务端。

    连接的建立,双方都确认了对方的端口号和IP地址。端口号是设备用来区分不同通信进程的。
    一个设备的通信进程建立时,只能是客户端或者服务端。
    于是
    只需要建立两个通信进程,一个是以客户端身份建立,一个是以服务端身份建立即可。
    当然,客户端和服务端的概念其实只在建立时有,建立好以后双方并无差别。所以我这是什么傻问题。

    TCP连接的两端,端口号需要一致吗

    不需要
    端口号是设备用来区分本地通信进程的,也就是收到一个TCP报文,通过查看它的目的端口号,来得知它属于哪一个通信进程。

    但还是有疑惑的地方,就是关于程序进程、通信进程、socket、TCP,这些所有之间的联系和区分,这应该要等我深入学习以后才能理解

  • 相关阅读:
    VMware Workstation Pro 12 ubuntu 20.04 突然奔溃,重新打开后导致win11系统蓝屏问题
    MySQL 8.0安装教程
    根据二叉树创建字符串--力扣
    【数据结构】C++实现AVL平衡树
    c++异网高效发送数据
    解决因为修改SELINUX配置文件出错导致Faild to load SELinux poilcy无法进入CentOS7系统的问题
    2-2线性表-链表
    达梦数据库如何查看历史sql
    ODPS SQL优化总结
    卷积神经网络CNN手写数字识别案例
  • 原文地址:https://blog.csdn.net/weixin_44050362/article/details/138041806