일반적으로 socket(소켓) 통신에서의 socket은 network상에서 사용되는 network socket을 말한다
- Network를 통해 데이터를 주고 받기 위한 endpoint(엔드포인트)
- 서비스별로 엔드포인트가 존재하고, 해당 서비스 통신을 위해서는 해당 엔드포인트에 연결
- Internet Socket
- Protocol(프로토콜), IP address(IP 주소), port number(포트)로 정의됨
- Protocol: 다른 시스템과 원활한 통신을 위한 통신 규약
- IP address: Internet Protcol 통신을 위한 고유 식별 번호
- Port number: 각 host별로 특정 서비스를 위해 지정되고, 네트워크 통신에서 특정 서비스 연결을 위해 사용되는 값으로 단일 host내에서 서로 다른 서비스간 공유할 수 없다.
- Protocol(프로토콜), IP address(IP 주소), port number(포트)로 정의됨
- 특정 port 번호를 같는 socket은 잘 알려진 서비스와 연관됨
- 80: HTTP
- 22: ssh
- 443: HTTPS
- 잘 알려진 서비스를 특정 port 번호외 다른 port 번호로 변경 가능
- 특별한 목적으로 web service를 80이 아닌 8080으로 설정 가능
# 소켓 타입
Datagram Sockets
- UDP(User Datagram Protocol)를 사용하는 무연결 socket
- Datagram socket에서 보내거나 받은 packet은 개별적으로 주소가 지정되고 라우팅됨
- Datagram socket에서는 순서와 신뢰성이 보장되지 않으므로 한 기계 또는 프로세스에서 다른 기계로 전송되는 여러 packet이 임의의 순서로 도착하거나 전혀 도착하지 않을 수 있음
Stream Sockets
- Connection-oriented Sockets
- TCP(Transmission Control Protocol)
- SCTP(Stream Control Transmission Protocol)
- DCCP(Datagram Congestion Control Protocol)
- 오류 없는 데이터 전송, packet 순서, 흐름 제어 보장
- 인터넷에서 일반적으로 TCP를 사용하여 구현
- Application에서 TCP/IP 프로토콜을 사용하여 통신
- 송신된 순서에 따라 중복되지 않게 데이터를 수신함으로 이에 따른 overhead 발생
Raw Sockets
- 프로토콜별 전송 계층 형식 없이 IP packet을 직접 보내고 받을 수 있음
- 전송 계층 프로토콜(예: TCP, UDP)에 상관없이 IP packet으로 주고 받음
- Berkeley sockets을 기반으로 하는 API는 raw sockets을 지원하며, 윈도우 XP는 2001년 윈삭 인터페이스에 구현된 raw sockets 지원을 통해 출시되었으나, 3년 후 마이크로소프트는 보안상의 문제로 row sockets 지원을 제한
- Nmap과 같은 보안 관련 응용 프로그램에서 사용
- 일반적으로 네트워크 장비에서 사용할 수 있으며 IGMP와 OSPF와 같은 라우팅 프로토콜에 사용
- ping 유틸리티에 의해 사용되는 인터넷 제어 메시지 프로토콜(ICMP)에도 사용
'CNU SW 아카데미 > 5주차' 카테고리의 다른 글
[자바 프로그래밍] 컴퓨터 네트워크와 HTTP (0) | 2024.07.31 |
---|---|
[자바 프로그래밍] 네트워크 (0) | 2024.07.29 |