Java—网络连接协议

一、TCP协议

TCP的IP地址和端口号.png


TCP建立连接.png


TCP如何发放IP(DHCP).png

端口号&DNS.png


私网&公网.png

注:一般给对方发送IP地址,一般是为公网IP(因为有可能不在同个私网/局域网);若确定在同个私网中,则可以发送私网IP地址

二、HTTP协议

HTTP协议.png


HTTP的数据结构.png

http协议的原理(通过socket来封装请求和响应内容)

public class HttpServer {
	public static void main(String[] args) throws IOException{
        ServerSocket serverSocket = new ServerSocket(8888);
      //一直监听,直到受到停止的命令
        while (true) {
            Socket socket = null;
            try {
            	//如果没有请求,会一直hold在这里等待,有客户端请求的时候才会继续往下执行
                socket = serverSocket.accept();
                
                //使用多线程技术优化(线程池)
                // log
        		BufferedReader bufferedReader = new BufferedReader(
        				//获取输入流(请求)
        		        new InputStreamReader(socket.getInputStream()));
        		StringBuilder stringBuilder = new StringBuilder();
        		String line = null;
        		while ((line = bufferedReader.readLine()) != null
        				//得到请求的内容,注意这里作两个判断非空和""都要,只判断null会有问题
        		        ) {
        			System.out.println(line);
        		    stringBuilder.append(line).append("<br>");
        		}
        		String result = stringBuilder.toString();
//                        System.out.println(result);
        		// echo
        		//这里第二个参数表示自动刷新缓存
        		PrintWriter printWriter = new PrintWriter(
        		        socket.getOutputStream(), true);
        		printWriter.print("HTTP/1.1 200 OK \r\n");
        		printWriter.print("Content-Type:text/html;charset=utf-8  \r\n");
        		printWriter.print("\r\n");
        		printWriter.print("<h5>你刚才发送的请求数据是:<br> \r\n");
        		printWriter.write(result);//将日志输出到浏览器
        		printWriter.print("</h5> \r\n");
        		// release
        		printWriter.close();
        		bufferedReader.close();
        		socket.close();
        		
            } catch (IOException e) {
                e.printStackTrace();
                if(serverSocket != null) {
                	serverSocket.close();
                }
            }
        }
    }

}

socket:阻塞

nio:非阻塞

三、并发量的相关处理

如何处理并发量.png

四、常见的网络攻击

一些网络攻击.png

posted @ 2020-11-17 10:03  娜豆  阅读(203)  评论(0编辑  收藏  举报