TCP的特点: 面向连接,可靠,时延大,适用于大文件。
UDP特点,无连接,不可靠,时延小,适用于小文件
下面内容,请全文背诵:
1.传输层的寻址与端口
1.复用: 应用层所有的应用进程都可以通过传输层再传输到网络层。
2.分用: 传输层从网络层收到数据后交付给指定的应用进程
复用:就是说 所有的进程,都会经过传输层。多对一
分用: 一对多,数据从传输层来找到对应端口的进程,发给这个进程。
端口号只有本地意义,在因特网中不同计算机的相同端口号是没有联系的。
端口号的 长度只有 16bit, 能表示65535 个不同的端口号
- 0~1023为重要的系统应用程序
- 登记端口号 为 1024~4915
- 客户端口号(49152~65535) 仅在客户端进程运行时才动态选择
套接字socket=(主机ip地址,端口号)
在网络中,采用发送方和接收方的套接字组合来识别端点,套接字唯一标识了网络中的一个本机和它上面的一个进程
UDP 的使用场景:
1.适合一次性传输少量数据的网络应用
2. UDP无阻塞控制,适合很多实时的应用
比如IP电话,或者视频会议 等等。要求源主机以恒定的速率发送,不能有太大的延迟。
不管应用层多大的报文,UDP照样发送,一次一个完整的报文。
UDP首部开销小,8个字节。
TCP连接建立相关原理
假设运行在一台主机(客户)上的一个进程想与另一台主机(服务器) 上的一个进程建立一条连接,客户应用进程首先通知客户TCP,他想建立一个与客户服务器上某个进程之间的连接,客户中的 TCP会用一下步骤与服务器TCP连接
1: 首先,客户端发送连接请求报文,没有应用层的数据!!!
SYN=1,seq=x(随机) ( 注意:SYN 是连接同步位 ,英文是 sync大概的意思)
2:服务器收到了,(服务器自己)为该TCP连接分配缓存和变量,并且向客户端返回确认报文段,允许连接,无应用层数据.
( SYN=1 , ACK=1, seq=随机), ack = x+1 )
同步位只是用于确认连接请求的,ACK是确认位,
客户端为该TCP连接分配缓存和变量,并且向服务器返回确认的确认,可以携带数据(应用层数据)
SYN=0,ACK=1,seq=x+1,ack=y+1 (期望收到y+1)
SYN洪泛攻击
不停的 发请求连接 数据包,服务器不停的 返回ACK 给攻击者确认,浪费服务器资源,如果攻击者对服务器发送非常大量的TCP连接,由于第一个请求都没有完成三次握手,
TCP连接的释放
参与一条TCP连接的两个进程中的任何一个都能终止该连接,连接结束后,主机中的“资源" (缓存和变量) 都将被释放。