(一)TCP/IP概述
1,TCP/IP协议是一个协议簇,是一个多层协议的组合。里面包括很多协议的。。之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议,就用他两命名了.而UDP只是其中的一个协议.
主要包括应用层,传输层,网络层,网络接口层,我们常用的http访问就在应用层.
1.1,应用层:负责具体的应用,比如HTTP访问、FTP文件传输等等
1.2,传输层:主要为两台主机上的应用程序提供端到端的通信。
1.3,网络层:IP层有时也称作互连网层,处理分组在网络中的活动,在底层通信网络的基础上,完成路由、寻径功能,提供主机到主机的连接。
1.4,网络接口层:有时也称作数据链路层或链路层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。
1.5,UDP (User Datagram Protocol),即用户数据报协议,是一种传输层通信协议。
1.6,TCP(Transmission Control Protocol),即传输控制协议,是一种传输层通信协议
(二)TCP和UDP比较
1,TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,在收发数据之前,必须和对方建立可靠的连接.
TCP三次握手过程
a 主机A通过向主机B 发送一个含有同步序列号的标志位的数据段给主机B ,向主机B 请求建立连接,通过这个数据段,
主机A告诉主机B 两件事:我想要和你通信;你可以用哪个序列号作为起始数据段来回应我.
b 主机B 收到主机A的请求后,用一个带有确认应答(ACK)和同步序列号(SYN)标志位的数据段响应主机A,也告诉主机A两件事:
我已经收到你的请求了,你可以传输数据了;你要用哪个序列号作为起始数据段来回应我
c 主机A收到这个数据段后,再发送一个确认应答,确认已收到主机B 的数据段:
"我已收到回复,我现在要开始传输实际数据了
这样3次握手就完成了,主机A和主机B 就可以传输数据了.
2,Tcp断开连接要进行4次,4次挥手
2.1, 当主机A完成数据传输后,将控制位FIN置1,提出停止TCP连接的请求
2.2, 主机B收到FIN后对其作出响应,确认这一方向上的TCP连接将关闭,将ACK置1
2.3,由B 端再提出反方向的关闭请求,将FIN置1
2.4, 主机A对主机B的请求进行确认,将ACK置1,双方向的关闭结束.
2.5由TCP的三次握手和四次断开可以看出,TCP使用面向连接的通信方式,大大提高了数据通信的可靠性,使发送数据端
2.6和接收端在数据正式传输前就有了交互,为数据正式传输打下了可靠的基础.
3.,为什么TCP建立连接需要三次握手?
答:防止服务器端,因为接收了早已失效的连接请求报文,导致的一直等待客户端请求,造成的资源浪费
4.TCP建立连接要进行3次握手,而断开连接要进行4次?
这是由于TCP的半关闭造成的;TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个单方向的关闭就叫半关闭.
5,TCP每次都要经历三次握手、四次挥手会造成性能低下,怎么解决的?
HTTP在1.1的时候出现了一种叫做keepalive connections的机制,它可以在传输数据后仍然保持连接,当客户端需要再次请求数据的时候,直接使用刚刚空闲下来的连接,而无需再次握手。
//为什么TCP连接需要三次握手分开需要四次握手?
http://blog.csdn.net/qq276592716/article/details/19762121
6,小结TCP与UDP的区别:
- TCP面向连接,UDP面向无连接,都具有稳定的双向通信功能
- TCP, 可靠,稳定(为了提供稳定的数据传输,它本身提供了超时重传机制,因此具有很高的稳定性);
UDP,快,效率高,(缺点是不保证数据一定能够正确传输,尤其是在网络拥堵的情况下)
- 因为TCP有确认机制、三次握手机制,这些也导致TCP容易被人利用,实现DOS、DDOS、CC等攻击。
- 没有TCP的这些机制,UDP较TCP被攻击者利用的漏洞就要少一些,但UDP也是无法避免攻击的,比如:UDP Flood攻击…
a.基于连接与无连接;
b.对系统资源的要求(TCP较多,UDP少);
c.UDP程序结构较简单;
d.流模式与数据报模式 ;
e.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。
7, 什么时候应该使用TCP?
当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用
8,使用场景:
因为一般QQ聊天是采用UDP来对话,他是面向无连接,当和一个人发完消息后,就释放连接,等待新连接
除了文件传输是才是用TCP
借鉴 :
1,TCP/IP原理浅析--->
https://www.jianshu.com/p/238b3fd525ec
2,TCP和UDP的区别
https://www.jianshu.com/p/eb4750ff7a39