1.认识网络基本模型
2.基于TCP协议的网络通信
3.基于UDP协议的网络通信
4.基于TCP/IP建立的协议
5.总结
一、网络的基本模型
OSI七层网络模型
应用层:面向用户的个各种协议
表示层:信息语法及之间的关联
会话层:不同机器之间建立
传输层:TCP、IP协议
网络层:路由器
数据链路层:网桥,交换机
物理层:网卡,网线,集线器,中继器,调制解调器
需要详细了解OIS网络模型的请往这走: https://blog.csdn.net/yaopeng_2005/article/details/7064869
TCP/IP模型则是将OIS的模型合并成4层。
下面是OIS与TCP/IP模型的对比图
二、基于TCP协议的网络编程
首先我们要了解一下TCP协议。
TCP协议是一种可靠的网络协议,它需要在通信双方建立socket从而形成网络连接。
在TCP建立连接中经典的三次握手建立连接阶段可以用如下图表示:
有新兴趣的可以往这边走https://blog.csdn.net/whuslei/article/details/6667471
在计算机网络通信中,我们需要找到具体的程序,通常使用ip+端口来寻找的。
ip可以找到我们的计算机,而端口则可以定位到这台计算机的某个程序,端口与进程是没有关联的,端口是用16位表示的
端口号范围 0-65535
接下来我们看一下TCP通信的模型图吧:
套接字:用于主机的IP地址+主机的端口号作为TCP连接的端点,
着这种端点成为套接字。
服务器端:ServerSocket类
客户端:Socket类
废话不多说,我们先来搭建一个服务器端和客户端
package com.demo.tcp; import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; /** * 服务器端 * @author Administrator * */ public class ServerDemo { private ServerSocket server; private Socket socket; private int port = 8888; //构造函数中初始化服务器 public ServerDemo() { // TODO Auto-generated constructor stub try { //这里利用构造方法初始化服务器,我这里只传了一个参数,所以本机相当于服务器 server = new ServerSocket(port); System.out.println("服务器初始化完成..."); } catch (IOException e) { // TODO Auto-generated catch block System.out.println("服务器初始化失败"); } } //服务器需要做的事 public void server(){ //因为服务器不能关,所以需要写个死循环来监听客户端的链接 while(true){ try { //监听客户端的链接,客户端链接进来程序才会继续执行 socket = server.accept(); System.out.println("客户端:"+socket); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public static void main(String[] args) { //启动服务器 new ServerDemo().server(); } }