티스토리 뷰

소켓(Socket)이란?


* 소켓 : 소프트웨어로 작성된 통신 접속점, 응용프로그램은 소켓을 통하여 통신망으로 데이터를 송수신하게 된다.


- TCP/IP를 이용하는 창구 역할

- 두 프로그램이 네트워크를 통해 서로 통신을 수행할 수 있도록 양쪽에 생성되는 링크의 단자

⇒ 서로 다른 프로세스끼리 데이터 전달이 가능하다 !




① 스트림 (TCP)

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

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

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

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


② 데이터그램 (UDP)

- 비연결형소켓

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

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

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




그렇다면, 소켓 통신을 할 때 서버와 클라이언트는 어떤 흐름을 가지고 돌아가게 될까?


* 소켓 통신의 Workflow




- 서버 (Server)

 1) socket() 함수를 이용하여 소켓을 생성

 2) bind() 함수로 ip와 port 번호를 설정하게 됩니다.

 3) listen() 함수로 클라이언트의 접근 요청에 수신 대기열을 만들어 몇 개의 클라이언트를 대기 시킬지 결정

 4) accept() 함수를 사용하여 클라이언트와의 연결을 기다림


- 클라이언트 (Client)

 1) socket() 함수로 가장먼저 소켓을 엶. 

 2) connect() 함수를 이용하여 통신 할 서버의 설정된 ip와 port 번호에 통신을 시도

 3) 통신을 시도 시, 서버가 accept() 함수를 이용하여 클라이언트의 socket descriptor를 반환

 4) 이를 통해 클라이언트와 서버가 서로 read(), write() 를 하며 통신 (이 과정이 반복)



'개념 공부' 카테고리의 다른 글

XML과 JSON 특징 그리고 차이점  (0) 2019.02.19
웹서버와 WAS 특징 그리고 차이점  (0) 2019.02.15
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함