JavaWeb|TCP/IP协议

目录
一、网络基础
1,IP地址
2,子网掩码
3,认识MAC地址
二、应用层重点协议
1,DNS
2,NAT
3,NAPT
二、传输层重点协议
1,TCP协议
2,UDP协议
3,TCP 和 UDP 区别

一、网络基础 1,IP地址 概念

IP地址(Internet Protocol Address)是指互联网协议地址,又译为网际协议地址
作用
IP地址是IP协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异。
格式
IP地址是一个32位的二进制数,通常被分割为4个“8位二进制数”(也就是4个字节),如: 01100100.00000100.00000101.00000110
通常用“点分十进制”的方式来表示,即 a.b.c.d 的形式(a,b,c,d都是0~255之间的十进制整数)。如: 100.4.5.6。
组成
网络号:标识网段,保证相互连接的两个网段具有不同的标识;
主机号:标识主机,同一网段内,主机之间具有相同的网络号,但是必须有不同的主机号;
分类
JavaWeb|TCP/IP协议
文章图片

JavaWeb|TCP/IP协议
文章图片

JavaWeb|TCP/IP协议
文章图片

2,子网掩码 格式
子网掩码格式和IP地址一样,也是一个32位的二进制数。其中左边是网络位,用二进制数字“1”表示,1 的数目等于网络位的长度;右边是主机位,用二进制数字“0”表示,0的数目等于主机位的长度。 子网掩码也可以使用二进制所有高位1相加的数值来表示,如以上子网掩码也可以表示为24。
作用
(1)划分A,B,C三类 IP 地址子网
(2)网络通信时,子网掩码结合IP地址,可以计算获得网络号(划分子网后的网络号)及主机号(划 分子网后的主机号)。一般用于判断目的IP与本IP是否为同一个网段。
计算方式
将 IP 地址和子网掩码进行“按位与”操作(二进制相同位,与操作,两个都是1结果为1,否则为0),得 到的结果就是网络号。
将子网掩码二进制按位取反,再与 IP 地址位与计算,得到的就是主机号。
十进制 二进制
IP地址 180.210.242.131 10110100.11010010.11110010.10000011
子网掩码 255.255.248.0 11111111.11111111.11111000.00000000
网络号 180.210.240.0 10110100.11010010.11110000.00000000
主机号 0.0.2.131 00000000.00000000.00000010.10000011
3,认识MAC地址
MAC地址,即 Media Access Control Address,用于标识网络设备的硬件物理地址。
主机具有一个或多个网卡,路由器具有两个或两个以上网卡;其中每个网卡都有唯一的一个MAC 地址。
网络通信,即网络数据传输,本质上是网络硬件设备,将数据发送到网卡上,或从网卡接收数据。
硬件层面,只能基于MAC地址识别网络设备的网络物理地址。
特殊的MAC地址
广播数据报:发送一个广播数据报,表示对同网段所有主机发送数据报。广播数据报的MAC地址为: FF:FF:FF:FF:FF:FF
二、应用层重点协议 1,DNS
DNS,即Domain Name System,域名系统。DNS是一整套从域名映射到IP的系统。
TCP/IP中使用IP地址来确定网络上的一台主机,但是IP地址不方便记忆,且不能表达地址组织信息,于 是人们发明了域名,并通过域名系统来映射域名和IP地址。
根节点即为根域名服务器,最早IPv4的根域名服务器全球只有13台,IPv6在此基础上扩充了数量。
域名是一个字符串,如 www.baidu.com , hr.nowcoder.com
解析过程
JavaWeb|TCP/IP协议
文章图片

2,NAT
NAT技术当前解决IP地址不够用的主要手段,是路由器的一个重要功能;
NAT能够将私有IP对外通信时转为全局IP。也就是就是一种将私有IP和全局IP相互转化的技 术方法:
很多学校,家庭,公司内部采用每个终端设置私有IP,而在路由器或必要的服务器上设置全 局IP;
全局IP要求唯一,但是私有IP不需要;在不同的局域网中出现相同的私有IP是完全不影响的;
JavaWeb|TCP/IP协议
文章图片

3,NAPT
那么问题来了,如果局域网内,有多个主机都访问同一个外网服务器,那么对于服务器返回的数据中, 目的IP都是相同的。那么NAT路由器如何判定将这个数据包转发给哪个局域网的主机?
这时候NAPT来解决这个问题了。使用IP+port来建立这个关联关系
JavaWeb|TCP/IP协议
文章图片

NAT技术的缺陷
无法从NAT外部向内部服务器建立连接;
转换表的生成和销毁都需要额外开销;
通信过程中一旦NAT设备异常,即使存在热备,所有的TCP连接也都会断开;
二、传输层重点协议 1,TCP协议
TCP,即Transmission Control Protocol,传输控制协议。人如其名,要对数据的传输进行一个详细的控制。
TCP协议段格式
JavaWeb|TCP/IP协议
文章图片

源/目的端口号:表示数据是从哪个进程来,到哪个进程去;
序列号:在建立连接时由计算机生成的随机数作为其初始值,通过 SYN 包传给接收端主机,每发送一 次数据,就「累加」一次该「数据字节数」的大小。用来解决网络包乱序问题。
确认应答号:指下一次「期望」收到的数据的序列号,发送端收到这个确认应答以后可以认为在这个序号以前的数据都已经被正常接收。用来解决不丢包的问题。
6位标志位:
URG:紧急指针是否有效
ACK:确认号是否有效,该位为 1 时,「确认应答」的字段变为有效,TCP 规定除了最初建立连接时的 SYN 包之外该位必须设置为 1 。
PSH:提示接收端应用程序立刻从TCP缓冲区把数据读走
RST:对方要求重新建立连接;我们把携带RST标识的称为复位报文段,该位为 1 时,表示 TCP 连接中出现异常必须强制断开连接。
SYN:请求建立连接;我们把携带SYN标识的称为同步报文段,该位为 1 时,表示希望建立连接,并在其「序列号」的字段进行序列号初始值的设定。
【JavaWeb|TCP/IP协议】FIN:通知对方,本端要关闭了,我们称携带FIN标识的为结束报文段,该位为 1 时,表示今后不会再有数据发送,希望断开连接。当通信结束希望断开连接时, 通信双方的主机之间就可以相互交换 FIN 位为 1 的 TCP 段。
2,UDP协议 UDP协议端格式
JavaWeb|TCP/IP协议
文章图片
目标和源端口:主要是告诉 UDP 协议应该把报文发给哪个进程。
包长度:该字段保存了 UDP 首部的长度跟数据的长度之和。
校验和:校验和是为了提供可靠的 UDP 首部和数据而设计。
3,TCP 和 UDP 区别
连接
TCP 是面向连接的传输层协议,传输数据前先要建立连接。
UDP 是不需要连接,即刻传输数据。
服务对象
TCP 是一对一的两点服务,即一条连接只有两个端点。
UDP 支持一对一、一对多、多对多的交互通信。
可靠性
TCP 是可靠交付数据的,数据可以无差错、不丢失、不重复、按需到达。
UDP 是尽最大努力交付,不保证可靠交付数据。
拥塞控制、流量控制
TCP 有拥塞控制和流量控制机制,保证数据传输的安全性。
UDP 则没有,即使网络非常拥堵了,也不会影响 UDP 的发送速率。
首部开销
TCP 首部长度较长,会有一定的开销,首部在没有使用「选项」字段时是 20 个字节,如果使 用了「选项」字段则会变长的。
UDP 首部只有 8 个字节,并且是固定不变的,开销较小。
传输方式
TCP 是流式传输,没有边界,但保证顺序和可靠。
UDP 是一个包一个包的发送,是有边界的,但可能会丢包和乱序。

    推荐阅读