일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- visual studio code
- 코랩
- vscode
- matplotlib
- 우분투
- 엑셀
- 가상환경
- 플라스크
- 디버깅
- 역할
- OpenCV
- SQL
- 디렉토리
- 아나콘다
- 깃허브
- 에러
- 라이브러리
- 데이터분석
- 리눅스
- 프로그래머스
- 기초
- 판다스
- 머신러닝
- 운영체제
- 파이썬
- MySQL
- 원격저장소
- 단축키
- 데이터베이스
- 예제
Archives
- Today
- Total
취미와 밥줄사이
[Network] 소켓(SOCKET) 통신이란 본문
소켓이란?
- 프로세스가 네트워크 세계로 데이터를 내보내거나 혹은 데이터를 받기 위한 실제적인 창구역할
- 프로세스가 데이터를 보내거나 받기 위해서는 반드시 소켓을 열어서 소켓에 데이터를 써내보내거나 소켓으로부터 데이터를 읽어들어야 한다.
- 소캣은 프로토컬, IP주소, 포트 넘버로 정의된다.
- 소켓은 떨어져 있는 두 호스트를 연결해주는 도구로써 인터페이스 역할
- 데이터를 주고 받을 수 있는 구조체
- 소켓을 통해 데이터 통로가 만들어집니다.
- 소켓은 역할에 따라 서버 소켓, 클라이언트 소켓으로 구분됩니다.
서버(Server)
클라이언트 소켓의 연결 요청을 대기하고, 연결 요청이 오면 클라이언트 소켓을 생성하여 통신이 가능하게 합니다.
- socket() 함수를 이용하여 소켓을 생성
- bind() 함수로 ip와 port 번호를 설정
- listen() 함수로 클라이언트의 접근 요청에 수신 대기열을 만들어 몇 개의 클라이언트를 대기 시킬지 결정
- accept() 함수를 사용하여 클라이언트와의 연결을 기다림
클라이언트(Client)
실제로 데이터 송수신이 일어나는 것을 클라이언트 소켓이다.
- socket() 함수로 가장 먼저 소켓을 연다.
- connect() 함수를 이용하여 통신 할 서버의 설정된 ip와 port 번호에 통신을 시도합니다.
- 통신을 시도 시, 서버가 accept() 함수를 이용하여 클라이언트의 socket descriptor를 반환
- 이를 통해 클라이언트 서버가 서로 read(), write()를 하며 통신의 과정 반복
소켓 종류
스트림(TCP)
- 양방향으로 바이트 스트림을 전송, 연결 지향성
- 오류 수정, 정송처리, 흐름제어 보장
- 송신된 순서에 따라 중복되지 않게 데이터를 수신 -> 오버헤드가 발생
- 소량의 데이터보다 대량의 데이터 전송에 적함 -> TCP를 사용
데이터그램 (UDP)
- 비연결형 소켓
- 데이터의 크기에 제한이 있음
- 확실하게 전달이 보장되지 않음, 데이터가 손실되도 오류가 발생하지 않음
- 실시간 멀티미디어 정보를 처리하기 위해 주로 사용
Socket 통신
서버와 클라이언트가 특정 port를 통해 실시간으로 양방향 통신을 하는 방식
Socekt 통신의 특징
- 서버와 클라이언트가 계속 연결을 유지하는 양방향 통신
- 서버와 클라이언트가 실시간으로 데이터를 주고받는 상황이 필요한 경우에 사용
- 실시간 동영상이나 Streaming이나 온라인 게임 등과 같은 경우에 자주 사용된다.
REFERENCE
https://helloworld-88.tistory.com/215
'Infrastructure > Network' 카테고리의 다른 글
[Network] 와이어샤크 설치 및 사용법 (0) | 2022.01.26 |
---|---|
[Network] What is a web server (0) | 2021.11.19 |
[Network] TCP 연결과정 (0) | 2021.11.19 |
[Network] 쿠키와 세션 (0) | 2021.11.19 |
[HTTP] 동작 및 메시지 형식 (0) | 2021.11.19 |