쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 https://github.com/2jaehoon/ssangyonng.git에 올려두었습니다.
Network Programming
- C/S( Client / Server ) Programming
- java.net 패키지에서 관련 클래스를 제공
- 컴퓨터끼리 연결하여 데이터를 주고 받는 프로그램
- Network는 서로 다른 컴퓨터를 연결하기 위한 데이터 통신망( 컴퓨터가 제어 )이다.
OSI 7 Layer Reference Model
- 개발형 시스템에서 데이터를 주고 받는 것을 이해하기 쉽도록 정의해 놓은 7계층
- 실제 구성은 TCP/IP 4계층 모델을 사용
- 상위 계층은 하위 계층에 PDU( Protocol Data Unit )를 내려주고 서비스를 요청
(Service Request)
* 응용 계층( Application Layer )
- 사용자가 네트워크에 접속하기 위해 사용하는 프로그램( http, ftp, telnet, ssh 등 )
* 표현 계층( Presentation Layer )
- 사용자가 입력한 값이 어떻게 변화되어 컴퓨터에 보여질 지 설정( charset encoding, 암호화 등 )
* 세션 계층( Session Layer )
- 가상 연결( 호 단위 연결 )
* 전송 계층( Transport Layer )
- 실제 연결( Protocol 사용 - TCP/UDP )
* 네트워크 계층( Network Layer )
- 경로 찾기( 길 찾기 )
- Packet 시작점에서 최종 목적지까지 성공적으로 전달될 수 있도록 경로 설정하는 일
* 데이터 링크 계층( Data Link Layer )
- 데이터를 오류없이 전송선로( media )에 link해 줄지를 설정하는 일
* 물리 계층( Physical Layer )
- 데이터를 물리적인 매체 매핑하여 보내는 일( 비트의 흐름을 제어 )
데이터 전송 시 장애 원인 ( Transmission Impairment )
- 외부에서 발생하는 큰 충격( 천둥 )
- 데이터를 전송하는 선에서 열이 발생하는 경우
- 혼선
Java 언어에서 OSI 7Layer의 상위 4계층에 해당하는 코딩
- 응용계층 : Application 개발 ( AWT, Swing )
- 표현계층 : character set변환 ( encoding, decoding )
- 세션계층 : 컴퓨터끼리 가상연결
- 전송계층 : 프로토콜 설정( TCP, UDP ) – Socket
TCP( Transmission Control Protocol )
- 패킷의 크기가 고정되어 있는 프로토콜
- 전화
- 속도 느림
- 비트를 검증하는 과정
- 데이터가 반드시 전달된다.
- 데이터의 안정성을 중요시할 때( 금융거래, 예약, 상품구매 )
- TCP/IP를 자바에서 지원하는 클래스( java.net.ServerSocket, java.net.Socket )
- Server와 Cilent의 역할이 분명하다.
UDP( User Datagram Protocol )
- 패킷의 크기를 개발자가 설정할 수 있는 프로토콜
- 우편
- 속도 빠름
- 비트를 검증하는 과정이 없다.
- 데이터가 전달되지 않을 수도 있다.
- 전송속도가 빨라야 할 때( 화상 채팅 )
- UDP/IP를 자바에서 지원하는 클래스는 DatagramSocket, DatagramPacket
- Server와 Client의 역할이 불분명하다.
회선 확립 - 3단계로 회선확립 수행 순서( 3-way hand shake )
1. 서버가 대기한다.
2. 클라이언트가 SYN을 보낸다.
3. 서버는 SYN을 받고 ACK( 응답 )을 보낸다.
4. 클라이언트는 ACK( 응답 )을 보낸다.
5. 회선 확립이 클라이언트와 서버 동시에 일어난다.
소켓 통신
* ip
- 컴퓨터의 주소
* port
- 컴퓨터의 문 0~65535개의 port가 열릴 수 있다.
- 0~1024사이의 port는 이미 예약되어 있는 port가 많다.
- port는 선점으로 어떤프로그램이든 하나만 사용할 수 있다.
*소켓 통신 순서
// 초기설정
// 서버에서 OS에서 방화벽을 열어야 한다.
// 지정한 방화벽을 열어야 한다.
//1. 서버 소켓을 생성 - Listen 상태가 된다.( 서버 )
ServerSocket ss = new ServerSocket( 포트 );
// 클라이언트에서 PORT와 방화벽을 열고 접속을 시도해야 한다.
// 임의의 PORT와 방화벽을 열리고 방화벽 접속시도
// 지정한 서버 ip와 서버에 포트로 접속 시도
//2. 소켓을 생성 - 자신 컴퓨터의 임의의 포트를 열고 서버로 접속을 시도( 클라이언트 )
Socket client = new Socket( 서버의 ip, 포트 );
//3. 접속자 소켓을 허가하여 받는다(서버)
Socket client = ss.accept();
'성장 일기 > 쌍용교육센터' 카테고리의 다른 글
0113/다 대 다 채팅 (0) | 2023.01.16 |
---|---|
0112/Socket, Thread (0) | 2023.01.12 |
0110/Stream (0) | 2023.01.10 |
0109/Stream, File (0) | 2023.01.09 |
0106/예외 처리, Stream (0) | 2023.01.06 |