慢启动算法在传输层同时实现了拥塞控制与流量控制
UDP 最简单的头部结构
伪头部,网络层与传输层的信息放在一起,传输tcp或是udp数据段,伪头部仅校验用
TCP transport control
面向连接的协议,提供可靠的端到端的字节流
字段长度要小于64kb
套接字(socket)
包含ip和端口号
ip 32位,端口16bits位
知名端口号 0-1023,1024-49151
FTP端口号:20,21
SMTP:25,email传输
HTTP:80,联网

字节流而不是消息流:发送4个tcp数据段,接收方去掉头部把它们合并,应用层会把它们看作合并的数据,不会看作4个消息
tcp可以缓存发送和立即发送(有push标志01,需要立即发送),紧急数据(URGENT标志)
TCP 的每个字节都有自己的32位序列号,对字节进行编号,编号长度32位
也用了滑动窗口协议,有确认ack,这里是期望接收到下一个字节,不是对已经接收到的字节进行确认,跟之前不同。
TCP头部

编号是连续的,不需要知道全部字节的编号,只需要知道第一个字节的编号和大小
sequence number:第一个字节的编号
ack number 确认号:期望接收的下一个字节的编号
ACK指示位,第一次握手没有ack,这里ACK指示位是0,不需要读取ack number
TCP header length (之前有IHL ip header length,四个字节):单位是32位,或是四个字节
灰色:还没有被使用
CWR congestion window reduced 拥塞窗口锐减:如果拥塞,这里置为1,目的为缓解拥塞,给发送方
ECE 显示拥塞反馈:给接收方,表明已经拥塞
URG:对应是否紧急
Urgent pointer:指出紧急数据的位置
PSH:push
RST 重新开始:如果传输中出现问题,需要重新建立RST
SYN 是否同步:建立连接时为1,传输时为0
SYN=1,ACK=0第一次握手;SYN=1,ACK=1第二次握手

window size:滑动窗口大小
传输的时候不传输伪头部
例题:


序号不一定从0开始


TCP滑动窗口

Nagles算法,解决每次只发送一个字节的问题(蠢笨窗口)
蠢笨窗口:每次空出一个字节就告诉发送方;相当于发送方每次发送一个字节;最好是积累一定缓冲空间再告诉发送方
Clark算法不重要
第七章
DNS 域名
分类:通用域/国家域

不断有新是域被批准,biz,info,name,pro。。。
域名,cs.zjy.edu.cn后面是顶级域名
域名对大小写不敏感
dns把域名映射到资源记录器上
域名

向本地名字服务器发送请求,它们不在同一个顶级域名下面,本地名字服务器找根域名服务器,找edu服务器,找相应华盛顿大学服务器,找cs学院,找相应主机,再找原主机
树形结构:从叶子节点到根节点去找
