tcp特性
1. 工作在传输层
2. 面向连接协议
3. 全双工协议
4. 半关闭
5. 错误检查
6. 将数据打包成段,排序
7. 确认机制
8. 数据恢复,重传
9. 流量控制,滑动窗口
端口号
端口号:确定进程
端口号有三类
1.规定好的 知名的端口号 80 443 人为规定
2.系统随机分配(客户端 去访问服务端 系统会自动 随机分配一个端口号给你)
3.人类自由使用 (写)
tcp报文格式
控制位
URG(紧急位):表示本报文段中发送的数据是否包 含紧急数据。后面的紧急指针字段(urgent pointer)只有当URG=1时才有效
ACK(确认位):表示是否前面确认号字段是否有 效。只有当ACK=1时,前面的确认号字段才有效。 TCP规定,连接建立后,ACK必须为1,带ACK标志的 TCP报文段称为确认报文段
PSH(急切位):提示接收端应用程序应该立即从 TCP接收缓冲区中读走数据,为接收后续数据腾出空 间。如果为1,则表示对方应当立即把数据提交给上 层应用,而不是缓存起来,如果应用程序不将接收到 的数据读走,就会一直停留在TCP接收缓冲区中
RST(重置位):如果收到一个RST=1的报文,说明 与主机的连接出现了严重错误(如主机崩溃),必须 释放连接,然后再重新建立连接。或者说明上次发送 给主机的数据有问题,主机拒绝响应,带RST标志的 TCP报文段称为复位报文段
SYN(同步位):在建立连接时使用,用来同步序 号。当SYN=1,ACK=0时,表示这是一个请求建立连 接的报文段;当SYN=1,ACK=1时,表示对方同意建 立连接。SYN=1,说明这是一个请求建立连接或同意 建立连接的报文。只有在前两次握手中SYN才置为1, 带SYN标志的TCP报文段称为同步报文段
FIN(断开位):表示通知对方本端要关闭连接了, 标记数据是否发送完毕。如果FIN=1,即告诉对方: “我的数据已经发送完毕,你可以释放连接了”,带FIN 标志的TCP报文段称为结束报文段
三次握手
pc1要和pc2连接,pc1会发送一个请求连接的报文,报文包括报文的序号(seq=x)和同步位(SYN=1,ACK=0)
pc2收到消息后回复一个报文,报文包括报文的序号(seq=y)和ack确认号( 我希望你下一次发送 x+1 序号的报文 给你 )和同意连接的控制位(SYN=1,ACK=1)
pc1收到报文后会发送一个x+1报文和希望下次发送y+1的序号报文给我(Ack=y+1)和确认位(ACK=1)