-
Ch2. 애플리케이션 계층CS/네트워크 2024. 7. 30. 17:10
Socket
- 소켓이란?
- 소켓(Socket)은 네트워크 통신의 기본 단위로, 네트워크 상의 두 컴퓨터 간에 데이터를 주고받기 위해 사용되는 소프트웨어 구성 요소. 소켓을 사용하면 프로그램이 네트워크를 통해 서로 통신할 수 있게 된다.
- 소켓은 네트워크 연결의 끝점을 나타내는데, 이는 네트워크 통신의 종단점(endpoint)을 의미하며, IP 주소와 포트 번호로 식별됩니다.
- An interface between application and network
- The application creates a socket
- The socket type dictates the style of communication
- reliable vs best effort
- connection-oriented vs. connectionless
- Once configured, the application can
- pass data to the socket for network transmission
- receive data from the socket(transmitted through the network by some other host)
2. TCP 소켓 (SOCK_STREAM) vs UDP 소켓 (SOCK_DGRAM)
TCP 소켓 (SOCK_STREAM) UDP 소켓 (SOCK_DGRAM) 연결 유형 TCP는 연결 지향 프로토콜입니다. 통신을 시작하기 전에 클라이언트와 서버 간에 연결을 설정해야 합니다. 이를 위해 TCP는 3-way 핸드셰이크 절차를 사용합니다.
연결이 설정된 후에만 데이터 전송이 시작됩니다.비연결형 (Connectionless)
데이터를 전송할 때마다 목적지 주소를 지정해야 합니다.신뢰성 신뢰성 있음 (Reliable) 신뢰성 없음 (Unreliable) 데이터 전송 방식 스트림 (Stream)
(연속적인 바이트 스트림으로 데이터를 주고받는다)데이터그램 (Datagram)
(독립적인 패킷 단위로 데이터를 주고받음)흐름 제어와 혼잡 제어 있음 (Yes) 없음 (No) 속도 상대적으로 느림 (Slower) 오버헤드가 적어서 빠름 (Faster) 사용 예시 웹 브라우징, 이메일, 파일 전송 스트리밍, VoIP, 온라인 게임 TCP 서버의 주요 함수들
- socket()
- 소켓을 생성
int socket(int domain, int type, int protocol);
2. bind()
- 소켓을 특정 IP 주소와 포트 번호에 결합합니다.
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
3. listen()
- 소켓을 수신 대기 상태로 설정합니다.
int listen(int sockfd, int backlog);
4. accept()
- 클라이언트의 연결 요청을 수락하고 새로운 소켓을 생성합니다.
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
5. read()
- 소켓으로부터 데이터를 읽습니다.
ssize_t read(int fd, void *buf, size_t count);
6. write()
- 소켓으로 데이터를 보냅니다.
ssize_t write(int fd, const void *buf, size_t count);
7. close()
- 소켓을 닫습니다.
int close(int fd);
2. IP 주소와 포트 번호
- IP 주소: 네트워크에서 각 컴퓨터를 고유하게 식별하는 주소입니다.
- 포트 번호: 같은 IP 주소 내에서 여러 네트워크 서비스를 구분하는 숫자입니다. 예를 들어, 웹 서버는 일반적으로 포트 80 또는 443을 사용합니다.
'CS > 네트워크' 카테고리의 다른 글
HTTP (0) 2024.08.16 TCP / 3,4-Way Hand Shake / 흐름제어 / 혼잡제어 / UDP (0) 2024.08.14 Web application Architecture / URL / DNS / IP / Class / CIDR / 서브넷마스크 (0) 2024.08.14 Ch1. 컴퓨터 네트워크와 인터넷 (0) 2024.07.27 - 소켓이란?