网络编程
网络协议
1、著名的OSI(Open System Interconnection)开放系统互连参考模型
(1) 应用层:HTTP、FTP、SMTP、DNS、TELNET、HTTPS、POP3
(2) 表示层:
(3) 会话层:
(4) 传输层:
TCP和UDP
TCP:面向连接的可靠的基于字节流服务的传输协议
面向连接:当用TCP传输数据之前,要先建立连接,用“三次握手”的方式
可靠的:面向连接,所以可靠;TCP协议对于出错或丢失数据会要求“重发”
基于字节流:
因为是它面向连接的可靠的基于字节流服务的传输协议,所以它适合传输大量的数据。
UDP:非面向连接的,不可靠的基于用户数据报服务的传输协议
非面向连接:当用UDP传输数据之前,不会去确认对方是否在,不管是否在,都会发送
不可靠的:就算对方没收到,也不传了
基于用户数据报:所有的数据要包装为一个“数据报”DatagramPacket的
它有大小限制,64K以内。
(5) 网络层:逻辑地址寻址,ip地址
IPV4:32位 [0,255].[0,255].[0,255].[0,255]
IPV6:IPv6的地址长度为128位,是IPv4地址长度的4倍,格式为X:X:X:X:X:X:X:X,其中每个X表示地址中的16位,以十六进制表示
(6) 数据链路层:逻辑地址和物理地址对应
(7) 物理层:硬件
2、实际中用一个4层的TCP/IP协议参考模型
TCP/IP协议参考模型:因为TCP/IP这两个协议是最早指定标准的,用它俩代表一大堆协议,TCP/IP协议簇
还因为这么多协议中,这两个是最重要。
(1)应用层:重要代表 HTTP,HTTPS
(2)传输层:重要代表 TCP/UDP
(3)网络层:重要代表 IP协议
(4)主机-网络层:硬件层面
网络通信的三个要素
1、网络协议:
对速率、传输代码、代码结构、传输控制步骤、出错控制等制定标准。
通俗的比喻:通信的两端得保证能“听”得懂对方的话
2、IP地址:
负责能够把数据准确的送到对应的目的地
3、端口号
同一台主机上有很多的应用都要与网络通信,那么怎么区别?
端口号就是区别每一个应用程序。
同一个协议端口号不能重复。
端口号是一个16位的整数,即在[0,65535]之间。
(1)公认端口(Well-Known Ports)范围从0到1023,给特定知名服务
(2)注册端口(Registered Ports):端口号从1024到49151。松散的绑定到一些服务。
可以自己用,但是建议不要随便。
(3)动态/私有端口(Dynamic and/Private Ports):端口的范围从49152到65535。操作系统自动分配