TCP/IP协议学习
TCP/IP(Transmission Control Protocol/Internet Protocol)是传输控制协议和网络协议的简称,它定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准
TCP/IP 不是一个协议,而是个协议族的统称,里面包括IP 协议,ICMP 协议,TCP 协议,以及 http,ftp,pop3 协议等,网络中的计算机都采用这套协议族互联
网络协议栈架构:
提到网络协议栈结构,最著名的当属 OSI 七层模型,但 TCP/IP 协议族的结构则稍有不同,它们之间的层次结构有如图对应关系:
可见 TCP/IP 被分为4 层,每层承担的任务不一样,各层的协议的工作方式也不一样,每层封装上层数据的方式也不一样:
(1)应用层:应用程序通过这一层访问网络,常见 FTP、HTTP、DNS 和 TELNET 协议
(2)传输层:TCP 协议和 UDP 协议
(3)网络层:IP 协议,ARP、RARP 协议,ICMP 协议等
(4)网络接口层:是 TCP/IP 协议的基层,负责数据帧的发送和接收
IP 地址的学习:
网络上每一个节点都必须有一个独立的 IP 地址,通常使用的 IP 地址是一个 32bit 的数字,被 . 分成 4 组,例如,255.255.255.255 就是一个 IP 地址,有了 IP 地址,用户的计算机就可以发现并连接互联网中的另外一台计算机
A类:网络号(8位)+主机号(1.0.0.1-127.255.255.254) 子网掩码:255.0.0.0 二进制:00000001-01111111
B类:网络号(16位)+主机号(128.1.0.1-191.255.255.254) 子网掩码:255.255.0.0 二进制:10000000-10111111
C类:网络号(24位)+主机号(192.0.1.1-223.255.255.254) 子网掩码:255.255.255.0 二进制:11000000-11011111
D类:组播地址(224.0.0.0-239.255.255.255) 二进制:11100000-11101111
E类:用于实验使用(240.0.0.0-255.255.255.254),保留地址 二进制:11110000-11111111
MAC 地址学习:
MAC(Media Access Control)地址,或称为物理地址,硬件地址,用来定义互联网中设备的位置,在 TCP/IP 层次模型中,网络层管理 IP 地址,链路层则负责 MAC 地址,因此每个网络位置会有一个专属于它的 IP 地址,而每个主机会有一个专属于它 MAC 地址
端口号学习:
IP 地址是用来发现和查找网络中的地址的,但是不同程序如何互相通信呢,这就需要端口号来识别了,如果把 IP 地址比作一间房子 ,端口就是出入这间房子的门,真正的房子只有几个门,但是端口采用 16 比特的端口号标识,一个IP地址的端口可以有65536(即:2^16)个之多!
服务器的默认程序一般都是通过人们所熟知的端口号来识别的,例如,对于每个 TCP/IP 实现来说,SMTP(简单邮件传输协议)服务器的TCP端口号都是25,FTP(文件传输协议)服务器的 TCP 端口号都是 21,TFTP(简单文件传输协议)服务器的UDP端口号都是69,任何 TCP/IP实现所提供的服务都用众所周知的1-1023之间的端口号,这些人们所熟知的端口号由Internet端口号分配机构(Internet Assigned Numbers Authority,IANA)来管理
UDP(用户数据报协议)详解
UDP的特点:
1.UDP只在IP数据报服务的基础上增加了少量的功能:复用与分用,对整个报文的差错检测
传输层两大重要的功能:复用和分用
- 复用:在发送端,多个应用进程公用一个传输层
- 分用:在接收端,传输层会根据端口号将数据分派给不同的应用进程
2.UDP是无连接的:通信前不需要建立连接,通信结束也无需释放连接
3.UDP是不可靠的,它是尽力而为交付,不能确保每一个数据报都送达
4.UDP是面向报文的:
所谓『面向报文』就是指:UDP数据传输的单位是报文,且不会对数据作任何拆分和拼接 操作
- 在发送端,应用程序给传输层的UDP什么样的数据,UDP不会对数据进行切分,只增加一个UDP头并交给网络层
- 在接收端,UDP收到网络层的数据报后,去除IP数据报头部后遍交给应用层,不会作任何拼接操作
5.UDP没有拥塞控制:
UDP始终以恒定的速率发送数据,并不会根据网络拥塞情况对发送速率作调整,这种方式有利有弊
- 弊端:网络拥塞时有些报文可能会丢失,因此UDP不可靠
- 优点:有些使用场景允许报文丢失,如:直播、语音通话,但对实时性要求很高,此时UDP还是很有用武之地的
6.UDP支持一对一、一对多、多对多、多对一通信,而TCP只支持一对一通信
7.UDP首部开销小,只有8字节,而TCP头部至少由20字节,相比于TCP要高效很多
推荐的学习博客:互联网协议入门