6.1 TCP与UDP的区分:
TCP用于传输层有必要实现可靠传输的情况,由于有顺序控制,重发控制还有流量控制,拥塞控制,提高网络利用率等功能,可靠
UDP主要用于那些对高速传输和实时性有较高要求的通信或广播通信,比如打电话保持流畅度,不需要重发,不可靠
6.2 端口号用来识别同一台计算机中进行通信的不同应用程序,也被称为程序地址
通过源IP地址、目标IP地址、协议号、源端口号、目标端口号来分辨不同通信
端口号确定方法:
(1)标准既定的端口号
FTP服务器:21
SSH服务器:22
SMTP:25
HTTP服务器:80
FTP客户端:2000
HTTP客户端:2001
知名端口一般在0~1023
(2)时序分配法,由操作系统自动分配,在49152~65535
端口号由其使用的传输层协议决定,不同的传输协议可以使用相同的端口号
6.3 UDP(User Datagram Protocol)可随时发送数据,处理简单又高效,常用于:
(1)包总量较少的通信(DNS,SNMP等)
(2)视频,高频等多媒体通信(即时通信)
(3)限定于LAN等特定网络中的应用通信
(4)广播通信(广播,多播)
6.4 TCP通过检验和,序列号,确认应答,重发控制,连接管理,以及窗口控制等机制实现可靠性传输
例:主机A发送给主机B消息,主机B收到后会返回一个确认应答ACK(Positive Acknowledgement),没收到则返回一个NACK(Negative Acknowledgement),一段时间没收到回复则重新发送,重发时间至少为1秒,一般为6秒左右,重发二次则以2倍时间重发,直到一定次数,断开连接
如果因为一些原因,主机B收到了数据,但是没有返回ACk,主机A重新发送重复数据,主机B会根据数据的序列号来判断是否接收新数据
TCP通过首部发送SYN包和FIN包来建立和断开连接
SYN(请求建立连接)——》ACK(针对SYN的确认应答)——》SYN(请求建立连接)——》ACK(针对FIN的确认应答)——》FIN(请求切断连接)——ACK(针对FIN的确认应答)——》FIN(请求切断连接)——》ACK(针对FIN的确认应答)
分别是A-》B-》A-》B-》B-》A-》A-》B
TCP以段为单位发送数据,在三次握手过程中,在TCP首部中写入MSS(Maximum Segment Size)最大消息长度,选择小的使用
TCP利用窗口控制提高速度,同时发送多个数据段
流控制:接收端告诉发送端能接收的数据的大小,这大小就是窗口大小,接收端的缓冲区一旦面临数据溢出时,窗口大小的值会被设为更小的值,从而控制数据转发量
拥塞控制就是先发一个试试水,能行下次发两个,依次类推直到超时重发时把拥塞窗口设置为一半大小
TCP的确认应答和返回数据可以通过一个包发送,这种方式就是捎带应答
UDP首部包括:源端口号,目标端口号,包长度,校验和,数据部分
TCP首部包括:源端口号,目标端口号,序列号,确认应答号,数据偏移,保留,控制位,窗口大小,校验和,紧急指针,选项,填充,数据部分
窗口大小与吞吐量:窗口大小为W,往返时间是RTT
最大吞吐量为:W/RTT,例:Tmax = 65535(字节)/0.1秒 = 65538*8(比特)/0.1秒 = 5.2Mbps