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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值