OSI七层网络模型 | LINUX TCP/IP 四层概念模型 | 对应网络协议 |
---|---|---|
应用层 | 表示层 | |
表示层 | ||
会话层 | ||
传输层 | 传输层 | |
网络层 | 网络层 | |
数据链路层 | 网络接口 | |
物理层 |
tcp优缺点
建立连接 ,可靠,稳定 有确认,窗口,重传,拥塞控制机制,数据传输完后还会断开连接节约资源,慢,效率低,占用系统资源高,容易被攻击三次握手机制容易实现dos,ddos,cc等攻击,传输的是字节流
udp优缺点
无连接,不可靠,比tcp安全一点 但是还是会被 udo flood攻击 ,如果网络不好就容易丢包,但是小路快,且不能保证顺序,传输的是报文,当网络拥塞时tcp会因为拥塞机制降低速率,但是udp不会,所以在视频电话时十分有用
字节流跟报文区别
TCP通过字节流传输,即TCP将应用程序看成是一连串的无结构的字节流。每个TCP套接口有一个发送缓冲区,如果字节流太长时,TCP会将其拆分进行发送。当字节流太短时,TCP会等待缓冲区中的字节流达到一定程度时再构成报文发送出去,TCP发给对方的数据,对方在收到数据时必须给矛确认,只有在收到对方的确认时,本方TCP才会把TCP发送缓冲区中的数据删除。
而UDP传输报文的方式是由应用程序控制的,应用层交给UDP多长的报文,UDP照样发送,既不拆分,也不合并,而是保留这些报文的边界,即一次发送一个报文。
有界与无界之分是根据接收报文来划分的,对于TCP协议,客户端连续发送数据,只要服务端的这个函数的缓冲区足够大,会一次性接收过来,即客户端是分好几次发过来,是有边界的,而服务端却一次性接收过来,所以证明是无边界的;
而对于UDP协议,客户端连续发送数据,即使服务端的这个函数的缓冲区足够大,也只会一次一次的接收,发送多少次接收多少次,即客户端分几次发送过来,服务端就必须按几次接收,从而证明,这种UDP的通讯模式是有边界的。
滑动窗口协议
当发送接收窗口都是1时就是停止等待协议