• 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,这些所有之间的联系和区分,这应该要等我深入学习以后才能理解

  • 相关阅读:
    求以下代码的参数作用类型和返回类型
    【DSP】【第三篇】C6678启动过程
    27、Flink 的SQL之SELECT (SQL Hints 和 Joins)介绍及详细示例(2-1)
    【Leetcode】1381. Design a Stack With Increment Operation
    Unity中Shader雾效的原理
    MySQL性能优化(硬件,系统配置,表结构,SQL语句)
    API之 要求接口上传pdf 以 合同PDF的二进制数据,multpart方式上传
    9.行为建模(Behavioral modeling)
    1782_Adobe Reader X实现pdf分页保存
    d3力导向图
  • 原文地址:https://blog.csdn.net/weixin_44050362/article/details/138041806