前言:今天主要学习了TCP的详细,内容蛮多 需要背的理解的也有。
TCP的特性
1.工作在传输层
2.面向连接协议
3.全双工协议
4.半关闭
5.错误检查
6.将数据打包成段,排序
7.确认机制
8.数据恢复,重传
9.流量控制,滑动窗口
端口号
TCP要先建立连接: 系统当中每打开一个进程 会分配一个PID(编号,方便管理),其次会分配一个端口号
端口号一定要固定
端口号作用:确定两个进程通信 通过端口连接
端口分三类:1.规定好的 知名的端口号
2. 系统随机分配(客户端去访问服务端 系统会自动随机分配一个端口号给你)
3.人类自由使用(自己写)
一般访问服务器目的:下载文件(ftp tftp nfs),访问网页(apche nginx tomcat isis)
控制位
决定A和B目前处于什么状态 共11种 常用3种实例 :
A想和B请求建立连接状态 syn=1
A和B已经建立连接状态 ACK=1
A和B 已经断开连接 fin=1
控制位:
URG:紧急位: 表示本数据段是否还有紧急数据
ACK:确认位 : 已建立连接 (ack:确认号)
PSH:急切位 : 将接收端应用程序立即从缓冲区读走,为后续腾出空间
RST:重置位: 表示本数据段出现了严重错误
SYN:同步位 : 请求建议链接
FIN:断开位 : 断开连接
数据段的组成:
TCP的三次握手
所谓三次握手(Three-way Handshake),是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。
三次握手的目的是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号并交换 TCP 窗口大小信息.在socket编程中,客户端执行connect()时。将触发三次握手。
这边借用一下这位博主的图片:
大致理解:客户端发送一SYN报文 SYN=1 SEQ=X ,服务端发送SYN+ack报文并设置序号为Y,确认位为X+1。客服端收到报文后,发送ack报文,确认位为Y+1.
总结:今天学习的内容很重要,以后这篇应该会多次翻阅,熟练理解与背诵把。