1.1TCP传输特点:
- 端到端通信:客户应用程序在一端,服务器在另一端
- 建立可靠连接:建立连接时会测试网络的连通性
- 可靠交付:建立连接后会发送数据是可靠的,除非因为故障而不能可靠交付,发送方会得到通知
- 具有流控的传输:TCP控制数据传输的速率,防止发送方传送数据的速率快于接收方的接收速率,TCP可以用于从快速计算及向慢速计算机发送数据
- 双工传输:单个TCP连接允许同时双向传送数据
- 流模式:TCP从发送方向接收方发送没有报文边界的字节流
1.2TCP的首部
TCP首部各字段的含义如下:
- 源、目的端口号:用于寻找发送端和接收端的应用程序
- 首部长度:这个字段占4位,因此TCP最多有60字节的首部。如果没有选项字段,正常的长度是20字节
- 标志位:在TCP首部中有6个标志位
ACK:确认序号
SYN:同步序号用来发起一个连接
FIN:发送方完成发送任务
1.3TCP连接的建立和终止
连接步骤:
- 客户端发送一个SYN报文段指明客户打算连接的服务器端口,发送后,客户进去SYN_SENT状态
- 服务器启动后首先进去LISTEN状态,当它接收到客户端发来的SYN后,进入SYN_RCV状态,并发送SYN报文作为应答,同时将确认序号设置为客户的初始号+1,对客户的SYN进行确认。
- 客户端收到确认报文后进入ESTABLISHED状态,表明本方连接已经成功建立,客户将确认序号设置为服务器ISN+1,对服务器的SYN报文段进行确认,当服务器接收到确认报文后,也进入ESTABLISHED状态。
关闭步骤:
- 客户的应用进程发起关闭连接请求,它将导致TCP客户发送一个FIN报文段,用来关闭客户到服务器的数据传送,此时客户进入FIN_WAIT_1状态
- 当服务器收到这个FIN,它发回一个ACK,进入CLOSE_WAIT状态,确认序号收到的序号+1。客户收到该确认后进入FIN_WAIT_2状态,表明本方连接已经关闭,但是仍然能够接收服务器发来的数据
- 接着服务器程序关闭本方连接,其TCP端发送一个FIN报文段,进入LAST_AC状态,当客户接收到该报文段后进入TIME_WAIT状态
- 客户在收到服务端发送的FIN请求后,发回一个确认,并将确认号设置为收到的序号+1,发送FIN将导致应用程序关闭他们的的连接,服务器收到确认后,连接关闭,这些FIN的ACK是有TCP软件自动产生的
1.4流式套接字的交互模型
2.1UDP传输特点
- 多对多通信:多个发送方可以向一个接收方发送报文,一个发送方也可以向多个接收方发送报文
- 不可靠服务:报文可能丢失,重复或者无序,并且它没有重传措施,如果发生故障,也不会通知对方
- 缺乏流量控制:当数据包到达的速度比接收系统或应用的处理速度快时,只是将其丢弃而不会发出警告或者提示
- 报文模式
2.2UDP的首部
UDP各字段的含义:
- UDP校验和:UDP校验和是端到端的校验和,它由发送端计算,然后由接收端验证,其目的是发现UDP首部和数据在发送端到接收端之间发生的任何改动。