前言
TCP和UDP是两个传输层最有代表性的传输层协议,TCP一般提供可靠的信息传输,而UDP常被用于广播和细节控制交给应用的通信传输
传输层的定义
在传输层,IP首部有一个协议字段,用来区分使用的是什么协议,用端口号进行处理的具体程序
在TCP,UDP协议中,就是靠端口号来进行通信处理的
tcp
TCP是面向有连接的,同时是一直访问的
TCP保障了稳定性
DUP
UDP是不具有可靠性的数据协议
UDP保证了实时性
端口号
定义:端口号是用来识别同一计算机中通信的不同程序,因此也被称为程序地址
传输层协议正是利用这些端口号识别本机中正在进行通信的程序
TCP通过源IP地址,目标IP地址,协议号,源端口号,目标端口号来确定一个通信,一旦有一个不同,就会被认为为其他的通信
端口号如何确定
静态方法:很多应用程序都有它固定的端口号,如HTTP,FTP
时序分配法:动态的由操作系统来分配
不同的协议可以使用相同的端口号
TCP
TCP人如其名,代表着传输,发送,通信,进行控制的协议
TCP可以进行丢包时候的重发控制,还可以进行次序乱掉的分包进行顺序控制,同样的,TCP在确定对方存在的情况下才会发送信息,这节约了流量
在TCP中,回复就相当于ACK(确定收到的信号)
但是有时候ACK在回复的时候会丢失,这时也会重发,这对目标主机就是灾难
以下就是这些的解决方法
序列号:序列号是按顺序给发送数据的每一个字节都标上号码的编号,接收端将下一步要接收的序列号返回回去
重发超时:就是等待确定应答到来的那个特定的时间间隔,如果超过这个时间就会进行重发,但是达到一定的重发次数之后,就会判断产生了错误,就会强行断开连接
三次握手:
TCP的三次握手过程如下:
1)首先客户端发送seq=c的SYN数据包
服务器端响应一个seq=s,ack=c+1的SYN+ACK数据包
最后客户端回复一个seq=c+1,ack=s+1的ACK数据包,三次握手完成
MSS
定义:最大消息长度,最大消息长度正好是IP中不会被分片处理的最大数据长度;在建立连接的时候,这个就会写在首部
窗口
定义:是无需等待确定应带可以继续发送数据的最大值
滑动窗口控制,就是不是每一个数据都要重发,而是不发收到应答的,而去发后面的,给人滑动的感觉
窗口重发机制
两种情况:
未能收到答复:如果收到后面的答复,就会继续进行
传送丢失:设置接收端没有收到自己需要的序列号的时候,就会重发之前收到的确定应答,所以当发送端收到三次相同的确定答复就会进行重发
流控制
就是控制流量的多少,在少的时候变大,在多的时候变少
拥塞控制
控制传输的流量,使不会过多,也不会过少,不会导致网络瘫痪
提高网络利用率的规范
Nagle算法:该算法是指发送即使还有应该发送的数据,但是部分很少的话,会延迟发送的一种算法