성장 일기/쌍용교육센터 / / 2023. 1. 11. 11:54

0111/네트워크, 소켓 통신

쌍용교육센터에서 공부한 내용을 정리하며 기록하는 글이고 주관적인 생각이 들어갈 수 있습니다.
잘못된 내용이나 피드백 및 생각 공유는 언제든 환영입니다.
댓글로 남겨주시면 확인 후 수정하겠습니다.
내용에 대한 소스 코드는 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
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유