可靠的TCP协议(传输层)
1) TCP封包结构如下图:
各字段的含义为:
封包序号:记录每个封包的序号,当TCP封包大于IP封包的长度时,TCP封包就需要拆分成更小的包,来下发给网络层,通过该字段可以让接收端重新将TCP数据组合起来。
回应序号:回传给客户端的响应码,当客户端收到这个确认码时,就能够确定之前传递的封包已经被正确的收下了。
资料补偿:由于Options字段是任意的,为了确认整个封包的大小,就用这个字段来说明整个封包区段的起始位置。
保留:保留字段,还未被使用。
控制标志码:用来说明联机的状态,以让接收端了解这个封包的主要动作,这个字段共六位,代表六个句柄,若为1则表示启动,每位含义分别为:
URG(Urgent):若为1表示该封包为紧急封包,接收端应该紧急处理,且Urgen Pointer字段也会被启用。
ACK(Acknowledge):若为1表示这个封包为响应封包
PSH(Push function):若为1,代表要求对方立即传送缓冲区内的其他对应封包,而无需等待缓冲区满了才送。
RST(Reset):若为1,表示联机会马上结束,而无需等待终止确认手续。也就是说,这是个强制结束的联机,且发送端已断线。
SYN(Synchronous):若为1,表示发送端希望双方建立同步处理,也就是要求建立联机。通常带有SYN标识的封包表示主动要连接到对方的意思。
FIN(Finish):若为1,表示传送结束,所以通知对方数据传毕,是否同意断线,只是发送者还在等待对方的响应而已。
Window(滑动窗口):主要用来控制封包的流量的,可以告知对方目前本身有的缓冲器容量(Receive Buffer)还可以接受封包。当Window=0时,代表缓冲器已经满额,所以应该暂停传输数据。Window的单位是Bytes。
确认检查码:当数据有发送端送出前,会进行一个检验的动作,并将该动作的检验值标注在这个字段上;而接受者收到这个封包之后,会再次对封包进行验证,并且比对原发送的Checksum值是否相符,如果相符就接受,若不符就会假设该封包已经损毁,进而要求对方重新发送。
紧急资料:告知紧急数据所在的位置。
任意选项:表示接收端可以接收的最大数据区段容量,若此字段不使用,表示可以使用任意数据区段的大小。这个字段较少使用。
补足字段:将表头长度补齐为固定的长度。
2) 端口号的最大值为65535(2的16次方减1),端口号小于1024的端口只用root身份才能启动对应的服务,因此叫做特权端口。常用的端口与服务如下:
20:FTP-data,文件传输协议所使用的主动数据传输端口。
21:FTP,文件传输协议的命令通道
22:ssh,较为安全的远程联机服务器
23:Telnet,早期的远程机器服务软件
25:SMTP,简单邮件传递协议,用在作为mail server的端口
53:DNS,用在作为域名解析的服务器端口
80:www服务器
110:POP3,邮件收信协议
443:https,有安全加密机制的www服务器
3) TCP三次握手,如下图所示:
过程详解:
a) A封包发起,当客户端想要对服务器端联机时,就必须要送出一个要求联机的封包,此时客户端必须随机取用一个大于1024以上的端口来作为程序沟通接口。然后再TCP的表头当中,必须要带有SYN的主动联机(SYN=1),并且记下发送出联机封包给服务器端的序号(sequence number=10001)
b) B:封包接受与确认封包传送,当服务器接到这个封包,并且确定要接受这个封包后,就会开始制作一个同时带有SYN=1,ACK=2的封包其中那个Acknowledge的号码是要给client端确认用的,所以该数字会比(a)里面的sequence number多一号(ack=10001+1=10002),那我们服务器也必须要确认客户端确实可以接收我们的封包才行,所以会发出一个Sequence(seq=20001),并且开始等待客户端给我们服务器的响应。
c) C:会送确认包当客户端收到来自服务端的ACK数字后(10002)就能确认之前那个要求封包被正确的收受了,接下来如果客户端也同意羽服务端建立联机时,就会再次的发送一个确认封包(ACK=1)给服务器,亦即是Acknowledge=20001+1=2002.
d) D:取得最后的确认,若一切都顺利,在服务器端接收到带有ACK=1且ack=20002序号封包后,就能够建立起这次的联机了。
2.非连接的UDP协议
1) UDP(User Datagram Protocol,用户数据流协议),非面向连接的协议,即在UDP的传输过程中,接受端在接受到封包之后,不会响应封包(ACK)给发送端,所以封包并没有像TCP封包有较为严格的检查机制。
2) UDP封包结构图为:
3) UDP数据传输特点:不可靠,但速度快,多用于实时性要求较高,但正确率不是很高的数据传输方式,如视频传输。
3.网络防火墙与OSI七层协议
1) 防火墙的原理:防火墙软件对封包的表头进行分析,并且设定分析规则,当发现某些特定的IP,特定的端口或者特定的封包信息(SYN/ACK等),就将该封包丢弃,这就是防火墙的原理。
2) OSI七层中,每层抵挡的数据有:
第二层:可以针对来源与目标的MAC进行抵挡
第三层:主要针对来源与目标的IP,以及ICMP的类别(type)进行抵挡
第四层:针对TCP,UDP的端口进行抵挡,也可以针对TCP的状态(code)来进行抵挡。