728x90
Socket
- Application(process)이 시스템의 기능을 마음대로 사용하는 것은 불가능
- 대신 System은 네트워크 통신을 위한 Interface를 제공
- Application(process)이 Socket을 통해 데이터를 주고 받음(=통신)
- 개발자는 Socket Programming을 통해 네트워크 상의 다른 Process와 데이터를 주고 받을 수 있도록 구현한다.
- 대부분의 System(OS)은 Socket 형태로 네트워크 기능을 제공(Linux, Window 등)
- 개발자로서 일하면서 Socket Programming을 한 적이 없는 이유
- 대체로 Application Layer의 프로토콜을 라이브러리로 가져와 사용하게 된다. 이 라이브러리가 보통 Socket을 사용한 네트워크 통신을 구현하고 있음. 즉, 실제로는 사용하고 있지만 잘 모르고 있는 것임.
- 따라서 일반 Application 개발자는 Socket Programming을 직접할 일이 적다.
- Socket = < Protocol , IP address, Port number >
- Port number는 Socket을 구분하기 위한 숫자
- UDP는 3개(protocol, ip, port)로 식별할 수 있지만 TCP는 불가능
- TCP에서의 동작
- Connection A와 Connection B는 source의 IP, Port와 target의 IP, Port의 조합으로 연결을 식별한다.
- 그래서 서로 다른 프로세스(socket C1, socket C2)가 같은 정보의 소켓을 가지고 동일한 서버 프로세스와 연결을 생성하려고 하면 에러가 발생할 것이다.
- 표준 문서에서는 TCP Socket이 IP address와 Port만으로 식별할 수 있다고 써있지만 실제 구현에서는 위와 같이 Connection을 구별하기 위해 양 프로세스의 Socket 정보를 모두 활용한다.
*UDP는 Connection 개념이 없이 그냥 데이터 주고 받는다.
TCP, UDP 각각의 사용처
- TCP : Connection(연결) 기반, 신뢰성 보장, 데이터 순서 보장 => 느림
- 웹 - HTTP, HTTPS 통신
- 파일전송 - FTP, SFTP
- 이메일 - SMTP, IMAP, POP3
- 원격접속 - SSH, Telnet
- 데이터베이스와 클라이언트간 통신
- UDP : 신뢰성보다 속도와 효율성 중시, 비연결 지향 => 빠름
- Streaming 서비스 - Youtube, Netflix
- 온라인 게임
- VoIP(Voice over Internet Protocol) - Skype, Zoom
- DNS(Domain Name Service) <= 도메인 이름을 IP주소로 바꿔주는 건 가볍고 빠르게 처리해야 함.
- IoT 통신 - MQTT-SN, CoAP <= IoT 장치들은 제한된 리소스를 가지고 있어 빠른 UDP를 주로 사용
728x90
'Computer Science > Network' 카테고리의 다른 글
네트워크 기초 6. TCP/IP Stack 기준 설명 (0) | 2024.12.16 |
---|---|
네트워크 기초 4. 소켓, 포트, TCP (0) | 2024.12.10 |
네트워크 기초 3. WWW(World Wide Web) (2) | 2024.12.09 |
네트워크 기초 2. 프로토콜(Protocol)과 OSI 7계층 (0) | 2024.12.09 |
네트워크 기초 1. 네트워크와 인터넷 개념 (3) | 2024.12.08 |