전체 글
Runnable을 사용한 MD5 다이제스트 생성방법
Runnable을 사용한 MD5 다이제스트 생성방법 package practice1; import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.security.DigestInputStream;import java.security.MessageDigest;import java.security.NoSuchAlgorithmException; import javax.xml.bind.DatatypeConverter; public class practice implements Runnable{ private String fil..
HTTP
HTTP는 웹클라이언트가 서버와 대화하는 방법과 서버에서 다시 클라이언트로 데이터가 전송되는 방법을 정의한 표준이다. HTTP는 일반적으로 HTML파일과 그 안에 포함된 이미지를 전송하는 수단쯤으로 생각되지만, HTTP는 데이터 형식을 가리지 않고전송이 가능하다. HTTP는 웹 브라우저와 웹 서버 사이에 통신을 위한 표준 프로토콜이다. HTML 연결(클라이언트의 서버로의 요청)클라이언트가 서버의 HTTP 기본 포트 80에 대해 TCP 연결을 연다. 다른 포트 사용시 URL에 명시클라이언트가 특정 경로에 위치한 리소스를 요청하는 메시지를 서버로 보낸다. 요청에는 헤더와 선택적으로 빈 줄로 구분된데이터가 포함된다.서버는 클라이언트에게 응답을 보낸다. 응답은 응답 코드로 시작하며, 메타데이터의 전체 헤더와 빈..
InputStream & OutPutStream
바이트 단위로 기본적으로 지원한다. 이것은 가장 원시적인 형태의 입출력이며 아무런 변환 작업을 수행하지 않는다. 그러므로 바이너리 형태의 자원을 다루기 적합하며 InputStream/OutputStream의 두 클래스가 최상위 클래스이다. 두개의 클래스는 추상 클래스로 정의 되어있어 BufferedOutputStream, FileOuputStream등과 같이 내보내고자하는 타입에 맞게구현할 수 있다. 출력스트림 outputStream은 write라는 메소드를 제공하는데 0~255사이의 값만을 입력 받을 수 있다. 입력된 값의 하위 8비트를 출력한다. 하나씩 outputStream으로 전송하는 방식은 통신을 하는 서버에 굉장히 부담이다.Byte[]에 저장 후 한번에 write(byte)처럼 한번에 보내는 ..
소켓 통신 (어플리케이션)
소켓 통신 (어플리케이션)데이터 통신을 하다보면 패킷 나누기, 헤더 만들기, 수신 측에서 헤더 분석하기, 손실된 패킷 찾기 등에문제가 발생 할 수 있는데 소켓을 사용하게 되면 이를 한번에 해결할 수 있다. 소켓이란 두 호스트 사이의 연결을 말한다. 소켓의 기능 - 원격 장비에 연결하기 (서버, 클라이언트) - 데이터 보내기 (서버, 클라이언트) - 데이터 받기 (서버, 클라이언트) - 연결 닫기 (서버, 클라이언트) - 포트 지정하기 (서버) - 수신 대기하기 (서버) 지정된 포트에 대해 원격 장비의 연결 받아들이기 (서버) 해당 기능은 ServerSocket 클래스에 의해 제공된다. 연결이 되면 서버와 클라이언트는 서로 입력 스트림과 출력스트림을 얻게 되어 full-duplex 통신을 하게된다. 그리고..
UDP 통신
UDP 통신 UDP소켓은 두 호스트 사이의 고유의 연결이라는 개념이 없다. UDP소켓은 또한 TCP처럼 단일 연결을 위해 할당되지 않는다. TCP소켓은 네트워크 연결을 스트림처럼 다룬다. 소켓에서 가져온 입출력 스트림을 사용해 데이터를 보내거나 받는다. UDP는 이러한 방식을 지원하지 않고항상 개별 데이터그램 패킷으로 작업해야한다. 단일 데이터 그램에 채워 넣는 모든 데이터는 단일 패킷으로 전송되고, 덩어리채 유실되기도 한다.-> 패킷들 사이에 연관성이 없으며, 누가 먼저 보내져야 하는지에 대한 근거가 없다. UDP에서 전송될 주소를 포함한 데이터그램에 대한 모든 것이 패킷 그 자체에 저장되어 있기에 소켓은 대기하거나 전송할 로컬 포트만 알고 있으면 된다. 자바의 UDP 구현은 DatagramPacket..
Java 소켓 통신(서버)
Java 소켓 통신(서버) 서버 소켓은 서버에서 실행되며, 들어오는 TCP 연결을 기다린다.자바는 본질적으로 ServerSocket 클래스를 제공한다, 서버 소켓 생성하기 (기본 생성방법)4개의 생성자를 제공한다. 상황에 따라, port, 요청 큐 길이, InetAddress를 받아 생성 할 수 있고, 아무 정보가 없는 빈ServerSocket 파일도 생성이 가능하다. -> 특정 InetAddress 객체를 전달 받았을 경우 입력받은 지정된 주소로 들어오는 연결에 대해서만 서버 소켓을 대기한다.->포트번호를 0으로 설정할 경우 시스템은 사용할 수 있는 포트를 임의로 선택한다. 사용자에게 임의로 선택된 포트는 미리 알수 없기에 익명 포트라고 한다. 익명 포트는 FTP와 같은 다수의 소켓을 사용하는 프로토콜..
java 소켓 통신 (보안소켓)
java 소켓 통신 (보안소켓) 수누핑 공격에 방어하기 위해 인터넷 연결에 대한 근본적인 보안을 강화하기 위한 방법으로 소켓을 암호화 할 수 있다.이 방법은 트랜잭션에 대한 기밀성과 인증, 무결성을 제공한다. 보안소켓을 생성하는 것은 JSSE를 사용하여 보안통신을 위한 통신협상과 필요한 암호화를 투명하게 처리하는 소켓과 서버 소켓을만들 수 있다.소켓과 스트림을 통해 데이터를 보내기만 하면 된다. JSSE(Java Secure Socket Excetion)은 4개의 패키지로 나뉜다. Javax.net.ssl 보안 네트워크 통신을 위한 자바 API를 정의하는 추상 클래스.Javax.net 보안 소켓을 생성하기 위해 생성자 대신 사용되는 추상 소켓 팩토리 클래스.Java.security.cert SSL에 필요..
리눅스 cpu 코어수 확인
0. CPU 정보 확인> cat /proc/cpuinfo 1. CPU 코어 전체 개수 확인> grep -c processor /proc/cpuinfo 2. 물리 CPU 수 확인> grep "physical id" /proc/cpuinfo | sort -u | wc -l 3. CPU당 물리 코어 수 확인> grep "cpu cores" /proc/cpuinfo | tail -1
iptables 설정 (리눅스 방화벽)
iptables 설정 끄기 gitlab 설치 후 nginx가 실행은 되는데 접속이 안되서 엄청 해맸다... 알고 보니 80 포트를 iptables가 막고있었다.. iptables 설정 끄는 방법 service iptables stop iptables 부팅시 설정 끄기 chkconfig iptables off 특정 포트 열기(ex web) iptables -A INPUT -p tcp --dport 80 -j ACCEPTiptables -A INPUT -p tcp --dport 443 -j ACCEPT 443 포트는 ssl이 적용되고 있는 웹 서비스를 사용할 경우에만 열어주면된다.