网络编程(1):tcp、ip协议基础

一、OSI模型:
网络编程(1):tcp、ip协议基础
套接口:应用层到传输层或其他协议层的访问接口

二、IP数据报格式
网络编程(1):tcp、ip协议基础
版本:ip协议版本号,长度为4,IPv4为4,IPv6为6
首部长度:该字段4位,首部最大字节为60个字节
服务类型:长度为8位,3位优先权,最小延迟(D)、最大吞吐量(T)、最高可靠性®、最小费用(F)各1位,最后1位保留未用
总长度:该字段16位,
标识:16位,每发送一个IP包会加一
标志:3位,第一位不使用,第二位表示该片要不要被舍弃,第三位表示有无后续分片
片偏移:数据的偏移值
生存时间(TTL):最多经过的路由器数量,减为0时舍弃
协议类型:传输层使用的类型 6TCP 17UDP
首部校验和:对头部进行校验,因为传输层会对数据进行校验,每次经过路由器只是头部会改变,因此只需要对头部进行校验
源IP地址:发送数据的主机IP地址
目的IP地址:接受数据的主机IP地址

三、TCP协议:
特点:
**面向连接:**在通讯前先建立一条连接
**基于字节流、可靠传输:**发送到字节流之间存在关联,接收端收到乱序可以恢复顺序,接收端每接受一条数据,会返回一个确认,
**缓冲传输、流量控制:**接收端接受的数据先存在缓冲区,并告诉发送端缓冲区还有多大空间
**全双工:**每个端口既可以发送数据也可以接收数据

TCP报文:
网络编程(1):tcp、ip协议基础
序号:表示这个报文段中第一个数据字节序号
确认号:用来给对方确认的
头部长度:4位,最多60字节
保留号:6位,必须为0
标志位:URG(紧急指针有效)、ACK(确认序号有效)、PSH(接收端应尽快将报文交给应用层)、RST(连接重置)、SYN(发起连接)、FIN(终止)
窗口大小:用来控制流量
校验和:对头部和数据进行校验

三次握手:
网络编程(1):tcp、ip协议基础
四次挥手:
网络编程(1):tcp、ip协议基础
滑动窗口:
发送端的缓冲区有四种状态:
1)已发送已确认
2)已发送未确认
3)待发送未确认
4)不待发送未确认
网络编程(1):tcp、ip协议基础
接收端有三种状态:
1)已接受并确认
2)待接受未确认
3)没有接受未确认

发送端窗口大小由接收端确认,当接收端返回ACK时候,发送端的滑动窗口向后滑,如果出现丢包现象,则该包重传,其他包不用,并且发送端滑动窗口卡在丢失的包的位置上,