一. 网络协议
ARP(Address Resolution Protocol):地址解析协议,将IP解析成MAC地址
DNS:域名解析协议
SNMP(Simple Network Management Protocol)网络管理协议
DHCP(Dynamic Host Configuration Protocol)动态主机配置协议,它是在TCP/IP网络上使客户机获得配置信息的协议
FTP(File Transfer Protocol)文件传输协议,它是一个标准协议,是在计算机和网络之间交换文件的最简单的方法。
HTTP(Hypertext Transfer Protocol ):超文本传输协议
HTTPS(Secure Hypertext Transfer Protocol):安全超文本传输协议,它是由Netscape开发并内置于其浏览器中,用于对数据进行压缩和解压操作.
ICMP(Internet Control Message Protocol):Internet控制信息协议
SMTP(Simple Mail Transfer Protocol):简单邮件传送协议
TELNET Protocol:虚拟终端协议
TFTP(Trivial File Transfer Protocol):小文件传输协议
UDP(User Datagram Protocol):用户数据报协议,它是定义用来在互连网络环境中提供包交换的计算机通信的协议
TCP(TransmissionControl Protocol): 传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议
二. TCP的三次握手
1. TCP被称为最可靠的数据传输协议,主要是通过许多机制来实现的,其中最重要的就是三次握手的功能了
如图所示:
四个阶段,从上而下
1. 数据包发起。
当客户端想要对服务器端连接时,就必须要送出一个要求连接的数据包,此时客户端必须随机用一个大于1024的端口来作为程序沟通的接口,然后在TCP的报头中,就必须要带有SYN的主动连接SYN=1(SYN—synchronous:若为1,表示发送端希望双方建立同步处理,也就是要求建立连接),并且记下发送出连接数据包给服务器的序列号(Sequence number=10001)
2. 数据包接收与确认数据包传送
当服务器接到这个数据包,并且确定要接收这个数据包后,就会开始制作一个同时带有SYN=1,ACK=1(ACK,acknowledge:若为1代表这个数据包为响应数据包,关联acknowledge number),其中那个Acknowledg的号码是要客户端确认的,这个数据是seq+1即10002,那我们的服务器也必须要确认客户端确实可以接收我们的数据包才行,所以也会发出一个sequence (seq=20001)给客户端,并且开始等待客户端给我们服务器端响应
3. 回送确认数据包
当客户端收到来自服务器端的ACK数字后(10002)就能确认之前那个要求数据包被正确接收了,接下来如果客户端也同意与服务器端建立连接时,就会再次发送一个确认数据包ACK=1即acknowledge=20001+1=20002
4. 取得最后确认
在服务器端收到带有ACK=1且ack=20002序列号的数据包后,就能建立连接了
三. 无连接的UDP协议
UDP—user datagram protocol,即用户数据报协议,UDP是一个非连接的协议,传输数据之前源端和终端不建立连接.
UDP信息包的标题很短,只有8个字节,相对于TCP的20个字节信息包的额外开销很小。 吞吐量不受拥挤控制算法的调节,只受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制。 UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的链接状态表;
例如:
我们经常使用“ping”命令来测试两台主机之间TCP/IP通信是否正常,其实“ping”命令的原理就是向对方主机发送UDP数据包,然后对方主机确认收到数据包,如果数据包是否到达的消息能够及时反馈回来,那么网络就是通的。
总结:
UDP传输的速度很快,但是不会保障是否被成功接收
四. 关于TCP和UDP的区别
1. 基于连接与无连接
2. 对系统资源要求,TCP>UDP
3. UDP程序结构较简单
4. RCP保证数据的正确性,UDP可能存在丢包,TCP能保证数据的顺序,UDP不保证