1.网络通信的3要素
1.ip地址 找主机
2.端口号 找程序
3.协议 传数据和解析数据
Socket提供了1套标准的api 供用户的进程调用
定义Socket:是操作在某个IP上的某个端口号上用什么协议进行解析的点对点通信
同一时间服务端和客户端只能进行一个1对1的连接,若实现多个客户端连接1个服务端,服务端就会做1个等待队列,对客户端的连接进行管理调度。即1个端口可以监听多个连接的,但是同一时刻只能建立一个连接。
客户端建立连接的函数
stoket()//创建
connect()//连接
recv()//接收数据函数
send()//发送数据
建立连接时候发生了什么
`TCP的3次握手
1,连接请求 syn (同步序号)当前是用来建立连接请求的
syn (同步序号) = = 1 表示当前的连接是用来建立连接请求的,
sequence number 当前报文的序列号 用来解决传送数据包的顺序问题。
TCP就是利用这个sequence number 来确定数据的顺序,拼接数据的。
Acknowledment number 确认报文的序列号 用来解决不丢包的问题 对上次报文的确认等,
1.1连接请求 syn = 1 sequence Number 是系统分配的一个数值 acknowledmend Number (确认报文序列为0 )(在建立连接后是有值的)
1.2当服务端收到建立连接后 给出响应 即:ack标识 为1(确认报文置为1的) acknowedmend number 是对哪一个报文进行确认的(建立连接报文的sequence number +1)和自己的序列号带过去,
1.3 客户端 发送(对接受服务端发送的报文反馈的)报文 sequence number 即为报文的ackquence number 的值,
1.4 TCP window update 滑动窗口更新
acknowledment number 是对上次报文的确认的,一般是传来报文的sequence number +1
新建的连接 seqence number 都是系统分配的。之后就是上次传来报文的acknowedmend number的值。
2传输
2.1自定义数据格式
TCP的分段 :
数据传输链路层 MTU:最大传输单元
TCP分段 MSS 最大分段数
tcp是可靠传输的 数据报文传输到传输层时候 MSS < MTU