소켓의 정의
소켓은 컴퓨터 통신을 가능하게 하는 프로그래밍 API
네트워크 소켓
- 네트워크 환경에 연결할 수 있게 만들어진 연결부, 컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점
- 오늘날 컴퓨터 간 통신의 대부분은 인터넷 프로토콜을 기반으로 하고 있으므로, 대부분의 네
트워크 소켓은 인터넷 소켓이다 - 네트워크 통신을 위한 프로그램들은 소켓을 생성하고, 이 소켓을 통해서 서로 데이터를 교환한다. 소켓은 RFC 147에 기술 사항이 정의되어 있다
두 개의 시스템 혹은 프로세스가 소켓을 통해서 연결되기 위해서는 어느 한 곳에서 연결요청을
해야 한다. 이때 사용하는 것이 IP 주소와 포트 번호이다.
IP 주소와 포트 번호로 식별할 대상에게 네트워크 연결을 요청한다.
소켓에서 중요한 3가지 요소
1. IP 주소(Internet Protocol Address)
인터넷 또는 네트워크에서 장치들이 서로를 인식하고 통신하기 위해서 사용하는 고유한 번호
이다. 네트워크에 연결된 장치가 라우터 또는 컴퓨터이든, 모든 기계는 이 특수한 번호를 가지고
있어야 한다. 이 번호를 이용하여 발신자를 대신하여 메시지가 전송되고 수신자를 향하여 예정
된 목적지로 전달된다.
2. 포트(Port)
하나의 시스템에서 제공하는 서비스를 식별하기 위한 고유번호. 일반적으로 한 대의 PC는 최소
하나의 IP 주소를 갖는다. 그러나 그 시스템에서 사용하는 다양한 서비스에 대응하는 여러 개의
포트를 사용할 수 있다. 즉, 포트는 서비스 식별자로 봐도 된다. 예) 80 = HTTP, 20 = FTP, 443 = HTTPS, 25 = SMTP (email) 등
3. 프로토콜(Protocol)
소켓으로 데이터를 전달하는 사전에 약속된 방식. 대표적으로TCP(Transmission Control
Protocol)과UDP(User Datagram Protocol)이있다. 이 두 가지 프로토콜은 모든 운영체제
및 시스템이 지원한다.
TCP
- 소켓을 통한 데이터의 안전한 전송이 보장되며 일반적으로 복잡한 검증 절차 및 상태변환을 통해 전송된다.
- 데이터의 전송속도는 비교적 느리다. 연결 상태를 만든다.
UDP
-데이터 패킷형태의 자료 전달을 위주로 설계된 프로토콜이다. 데이터유닛의 완결성, 순서 및 중복 방지는 보장되지 않는다.
- 비교적 빠른 전송속도를 가진다. 연결 상태 없이 데이터전송만 한다.
TCP와 UDP의 차이
TCP: 관계 있는 사람과의 대화, 높은 정확성
예) 카톡메신저대화내용, SNS 답글, 이메일등
- 완결성, 메시지순서, 도달여부등이중요하고내용의정확성이
보장된다.
UDP : 연결성 없는 데이터 전달, 빠른 속도
예) 모르는사람이보내는광고메시지, 공익성문자 메시지등
- 중복여부, 전달순서등은 별로중요하지않다.
TCP:
소켓 API의 구성
API의 정의
Application Programming Interface의 약자
프로그래밍을 위해 제공되는 서비스. 운영체제, 시스템 또는 특정 웹사이트를 통한 서버 등에서
원하는 서비스를 제공해 주며 그것을 이용한 프로그래밍할 때 그 서비스를 사용할 수 있게
해주는 인터페이스. 보통 사용하는 언어로 호출할 수 있는 함수 형태가 있다.
예) Windows 운영체제 관련함수
Client
서버 통신 모델
소켓을 생성하여 데이터를 주고받을 때 사용하는 본보기. 프로그래밍을 위해 제공되는 API 함
수를 이용, 클라이언트 또는 서버로 작동 방식을 나눌 수 있다. 일반적으로 서버는 클라이언트가 연결을 요청할 때까지 기다리며, 클라이언트의 요청에 따라
소켓을 생성하여 데이터를 주고받을 수 있다. 예) MMORPG의 게임 서버 및 게임클라이언트
예) 모바일 앱과 채팅 서버
Sockets 중요 함수목록
함수명 | 기능 |
Socket | 소켓 생성자. 통신용 소켓을 만들어낸다. |
Bind | 소켓에 주소를 지정한다. (IP주소+포트번호) |
Listen | 소켓을 수신 대기 상태로 만든다. |
Accept | 통신요청이 올 때까지 프로그램 진행을 멈춤 |
Connect | 소켓을 통해 연결요청을 보냄(연결생성) |
Send/Read | 연결을 통해 데이터 전송 |
Receive/Write | 연결을 통해 데이터 수신 |
Close | 연결해제(연결종료) |
TCP 소켓 연결 흐름
UDP 소켓 연결 흐름
'학교 수업 > 컴퓨터네트워크' 카테고리의 다른 글
C#멀티 스레드 (0) | 2024.10.13 |
---|---|
스레드를 이용한 소켓 서버 (0) | 2024.10.13 |
멀티스레드 통신 (1) | 2024.10.13 |
네트수행평가 D-4 채팅 서버 기능 추가하기 (0) | 2024.10.09 |
유니티 클라이언트를 이용한 온라인게임 제작 (0) | 2024.10.07 |