본문 바로가기
인턴

[인턴 OJT 16일차] socket

by 리잼 2023. 1. 9.
반응형

 

Socket

- 프로그램이 네트워크에서 데이터를 주고 받을 수 있도록 네트워크 환경에 연결 할 수 있게 만들어진 연결부

일반적으로 TCP/IP 프로토콜을 이용한다.

TCP/IP 4계층에서 전송 계층 위에 놓인다

전송계층 위에서 전송계층의 프로토콜 제어를 위한 코드를 제공

소켓은 end point고 통신의 양 끝단이다.

 

소켓이 하는일

- 소프트웨어와 소프트웨어를 연결

- 소프트웨어간 데이터 통신

 

클라이언트

- 실제로 데이터 송/수신이 일어나는 것은 클라이언트 소켓임

- 소켓 생성, 연결 요청, 데이터 송/수신, 소켓 닫기

서버

- 클라이언트 소켓의 연결 요청을 대기하고, 연결 요청이 오면 클라이언트 소켓을 생성하여 통신이 가능하게 한다

- 소켓 생성, 결합, 주시, 받아들이기, 데이터 송수신, 소켓 닫기

 

클라이언트 흐름

1. 클라이언트 소켓 생성

2. 연결요청 ( connection )

3. 데이터의 송수신 ( Send, Recieve )

4. 소켓 닫기

 

서버의 흐름

0. 데이터를 송수신 할 땐 보안이 가장 중요함

1. 서버 소켓 생성

2. 바인딩

3. 클라이언트 연결 요청 대기

4. 클라이언트 연결 수립

5. 데이터 송/수신

6. 소켓 닫기

 

소켓의 종류

스트림 ( TCP )

- 양방향으로 바이트 스트림을 전송, 연결 지향성

- 오류 수정, 흐름제어 보장

- 송신된 순서에 따라 중복되지 않게 데이터를 수신 >> 오버헤드가 발생

- 소량의 데이터보다 대량의 데이터 전송에 적합 >> TCP를 사용

 

데이터그램 ( UDP )

- 비연결형 소켓

- 데이터의 크기에 제한이 있음

- 확실하게 전달이 보장되지 않음, 데이터가 손실돼도 오류가 발생하지 않는다.

- 실시간 멀티미디어 정보를 처리하기 위해 주로 사용됨

 

HTTP 통신과 Socket 통신의 비교

HTTP 통신

- Client 요청이 있을 때만 서버가 응답하여 해당 정보를 전송하고 곧바로 연결을 종료하는 방식

 

HTTP 특징

- Client가 요청을 보내는경우에만 Server가 응답하는 단방향 통신이다.

- Server로 부터 응답을 받은 후에는 연결이 바로 종료된다.

- 실시간 연결이 아니고, 필요한 경우에만 Server로 요청을 보내는 상황에 유용하다.

- 요청을 보내 Server의 응답을 기다리는 어플리케이션의 개발에 주로 사용된다.

 

Socket 통신

- Server와 Client가 특정 Port를 통해 실시간으로 양방향 통신을 하는 방식

 

Socket 통신의 특징

- Server와 Client가 계속 연결을 유지하는 양방향 통신

- Server와 Client가 실시간으로 데이터를 주고 받는 상황이 필요한 경우에 사용됨

- 실시간 동영상 Streaming 이나 온라인 게임 등과 같은 경우에 자주 사용됨

 

 

 

반응형