Java网络编程

计算机网络

1、TCP/IP协议的四层模型

  当通过HTTP发起一个请求时,应用层、传出层、网络层和链路层的相关协议对该请求进行包装并携带对应的首部,最终在链路层生成以太网数据包。以太网数据包通过物理介质传输给对方主机,对方主机接收到数据包以后,然后从链路层开始一层一层采用对应的协议进行拆包,最后把应用层数据交给应用程序来处理。

1.1、 应用层

  应用层的主要工作就是定义数据格式并按照对应的格式组装或解读数据。
  主要协议有:
  (1)SMTP:简单邮件传输协议,用于系统之间邮件信息的传输,默认端口号为25。
  (2)FTP:文本传输协议,运行在TCP协议上,用于在网络上进行文件传输,默认端口号为21。
  (3)HTTP:超文本传输协议,运行在TCP协议上,用于规定WWW服务器与浏览器之间信息传递规范,默认端口号为80 。
  (4)Telnet :远程终端协议,运行在TCP协议上,用于远程控制Web服务器 ,默认端口号为23。
  (5)DNS:域名服务协议,运行在UDP协议上,将域名转换成对应的IP地址,默认端口号为53。
  (6)SNMP:简单网络管理协议,运行在UDP协议上,用于管理网络节点,SNMP采用端口号161接收和发送请求,端口162接收trap(节点上报的陷阱报文)。
  (7)POP3:邮局协议,运行在TCP协议上,用于支持使用客户端远程管理在服务器上的电子邮件,默认端口号为110。

1.2、 传输层

  传输层的主要工作是定义端口,标识应用程序身份,实现端口到端口的通信,TCP协议可以保证数据传输的可靠性。
  主要协议有:
  (1)TCP:传输控制协议,为应用程序提供可靠的、面向连接的、基于流的服务,具有超时重传、数据确认等方式来确保数据包被正确发送到目的端。
  (2)UDP:用户数据报协议,为应用程序提供的是不可靠的、无连接的基于数据报的服务。
   TCP与UDP两大协议的区别:
   1、TCP是面向连接的(通信前需要建立连接,通信结束需要释放连接),而UDP是无连接的(通信前不需要建立连接,通信结束也无需释放连接)。
   2、TCP提供可靠交付服务(数据无重复、无丢失、无错误),而UDP是不可靠的(尽力交付)。
   3、TCP是面向字节流的(数据在传输的过程中以字节为单位被划分成一个个数据报),而UDP数据传输的单位就是报文(不会对数据作任何拆分和拼接操作)。
   4、TCP有拥塞控制(根据网络拥塞情况对发送速率作调整),而UDP没有拥塞控制(始终以恒定的速率发送数据)。
   5、TCP只支持一对一的全双工通信,而UDP支持一对一、一对多、多对多、多对一的通信。
   6、TCP头部至少由20字节组成,而UDP首部开销小,只有8字节。

1.3、 网络层

  网络层的主要工作是定义网络地址,区分网段,子网内MAC寻址,对于不同子网的数据包进行路由。
  主要协议有:
  (1)ARP:地址解析协议,用于将IP地址转换为MAC地址。
  (2)RARP:逆地址解析协议,用于将MAC地址转换为IP地址。
  (3)IP:网际协议,用于寻址与分段。

1.4 链路层

  链路层的主要工作就是对电信号进行分组并形成具有特定意义的数据帧,然后以广播的形式通过物理介质发送给接收方。

2、TCP三次握手与四次挥手

  TCP报文如下:

2.1、TCP三次握手
2.2、TCP四次挥手

Java网络编程

1、基于TCP协议的网络编程
(1)使用ServerSocket和Socket
(2)使用NIO实现非阻塞式网络编程
(3)使用AIO实现异步网络编程
2、基于UDP协议的网络编程
(1)使用DatagramSocket发送接收数据报DatagramPacket
(2)使用MulticastSocket实现多点广播
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值