티스토리 뷰
소켓이란
소켓은 논리적으로 컴퓨터 네트워크를 경유하는 프로세스 간 통신의 종착점이다.
이 말이 무슨 말이냐면, 네트워크를 이용해 데이터를 송수신 하고 싶은 프로그램들은 소켓을 거쳐야 한다는 것이다. 따라서 아래와 같은 위치에 소켓 레이어가 놓이게 된다.
네트워크 응용 프로그램들은 소켓을 거쳐 데이터를 통신 망으로 전달함으로써 데이터를 송수신 하게 된다.
여기서 응용 프로그램은 어플리케이션 계층, 통신 망은 전송계층이므로 소켓은 그 사이에 놓이게 된다.
즉 소켓은 응용 프로그램에서 TCP/IP를 이용하는 인터페이스 역할을 한다.
소켓의 특징
파일과 비슷한 데이터 타입
TCP/IP 표준이 아닌 네트워크 프로그래밍 인터페이스
TCP/IP의 관점에서 소켓은 하나의 네트워크 프로그래밍 인터페이스다.
운영체제나 언어에 종속적
5-Tuple
소켓 역시 이 5-Tuple의 정보를 가지고 있다.
1. 프로토콜 (TCP, UDP)
2. 자신의 IP address
3. 자신의 Port number
4. 목적지 IP address
5. 목적지 Port number
소켓 프로그래밍 절차
TCP (Transmission Control Protocol)
TCP Socket Flow (Image source)
socket() | 소켓 생성 |
bind() | 사용할 자신의 IP address와 Port number 등록 |
listen() | 연결 되지 않은 소켓을 요청 수신 대기 모드로 전환 |
connect() | TCP Client에서 server와 연결하기 위해 소켓과 목적지 IP address, Port number 지정 |
accept() | client의 요청 수락 후 연결 |
send(), recv() | client와 server간에 데이터 송수신 |
close() | 생성했던 소켓 종료 |
UDP (User Datagram Protocol)
connect과정 (서로 연결 과정)이 필요 없기 때문에 소켓을 생성한 후 바로 데이터 전송
'CS > 네트워크 공부' 카테고리의 다른 글
[네트워크] ARP (Address Resolution Protocol) (0) | 2023.03.26 |
---|---|
[네트워크] OSI 7 계층 개요 (1) | 2023.03.26 |
Network Layer (0) | 2019.05.26 |
raw socket을 이용한 packet sniffing (0) | 2019.05.06 |
Packet switching 더 자세히... (2) | 2019.03.25 |
- 운영체제 반효경
- 생활코딩 javascript
- Python Cookbook
- 쉘 코드
- shell code
- 스프링 테스트
- Gradle
- spring mvc
- 프로그래머스
- Spring Data JPA
- 방명록 프로젝트
- 스프링
- jsp
- Spring
- BOF
- 지옥에서 온 git
- 파이썬 for Beginner 솔루션
- Computer_Networking_A_Top-Down_Approach
- 파이썬 for Beginner 연습문제
- JPA
- 선형 회귀
- 패킷 스위칭
- JUnit
- 리버싱
- Thymeleaf
- 쉽게 배우는 운영체제
- 버퍼오버플로우
- Spring Boot
- Do it! 정직하게 코딩하며 배우는 딥러닝 입문
- 김영환
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Total
- Today
- Yesterday