Jeomxon's Tech Note

2024.01.23.(화) 5회 차 모각코 정리 본문

Mogaco/2023동계

2024.01.23.(화) 5회 차 모각코 정리

저문(jeomxon) 2024. 1. 23. 19:02

1. 프로토콜 스택의 내부 구성

TCP/IP 계층 구조

전체적으로 위의 계층이 아래의 계층에 작업을 의뢰하도록 되어있음

용어정리

TCP : Transmission Control Protocol

UDP : User Datagram Protocol

IP : Internet Protocol

ICMP : Internet Control Message Protocol

ARP : Address Resolution Protocol

브라우저나 메일 등의 일반적인 애플리케이션의 데이터 송, 수신은 TCP를 이용 DNS 서버에 대한 조회 등에서 짧은 제어용 데이터 송, 수신은 UDP를 이용

  • 패킷
  • 네트워크에서 분할된 수십 ~ 수천 바이트 정도의 작은 데이터 덩어리
  • ICMP
  • 패킷을 운반할 때 발생하는 오류 통지, 제어용 메시지 통지할 때 사용
  • ARP
  • IP 주소에 대응하는 이더넷의 MAC 주소를 조회할 때 사용
  • LAN 드라이버
  • LAN 어댑터의 하드워어를 제어
  • LAN 어댑터
  • 케이블에 대해 신호를 송, 수신하는 동작 실행

2.소켓의 실체는 통신 제어용 제어 정보

프로토콜 스택은 내부에 제어 정보를 기록하는 메모리 영역이 존재

이 메모리 영역에 통신 동작을 제어하기 위한 제어 정보를 기록

통신 상대의 IP 주소, 포트 번호, 통신 동작의 진행 상태 등…

소켓은 실체가 없기 때문에 이러한 제어 정보를 기록한 메모리 영역이 소켓이라고 할 수 있음

소켓에는 데이터를 보냈을 때, 응답이 돌아오는지의 여부와 송신 동작 후의 경과 시간 등이 기록되어 있음

프로토콜 스택이 소켓의 정보를 보고 데이터 송신을 포기하거나, 다시 보내는 동작을 실행

프로토콜 스택은 소켓에 기록된 제어 정보를 참조하면서 움직임

3. Socket을 호출했을 때의 동작

Socket 라이브러리의 socket()이나 connect()를 호출했을 때 프로토콜 스택의 내부 동작을 확인해보자

  1. 애플리케이션이 프로토콜 스택에 의뢰하여 하나의 소켓을 만듦
  2. 프로토콜 스택은 소켓 한 개 분량의 메모리 영역을 확보
  3. 초기 상태임을 나타내는 제어 정보를 소켓의 메모리 영역에 기록

소켓을 만들 때 한 개의 메모리 영역을 확보하고 초기 상태라는 것을 이 영역에 기록

소켓이 만들어지면 소켓을 나타내는 디스크립터를 애플리케이션에 알려줌

디스크립터를 통해 프로토콜 스택 내부에 있는 다수의 소켓 중 어떠한 소켓을 가리키는지를 확인할 수 있음

디스크립터만 있으면 소켓을 알 수 있고, 소켓에는 나머지 필요한 정보가 있으므로 프로토콜 스택에서 알 수 있음

이렇게 애플리케이션은 통신 상대의 정보를 일일이 통지받을 필요가 없어짐

1. 프로토콜 스택의 내부 구성

TCP/IP 계층 구조

전체적으로 위의 계층이 아래의 계층에 작업을 의뢰하도록 되어있음

용어정리

TCP : Transmission Control Protocol

UDP : User Datagram Protocol

IP : Internet Protocol

ICMP : Internet Control Message Protocol

ARP : Address Resolution Protocol

브라우저나 메일 등의 일반적인 애플리케이션의 데이터 송, 수신은 TCP를 이용 DNS 서버에 대한 조회 등에서 짧은 제어용 데이터 송, 수신은 UDP를 이용

  • 패킷
  • 네트워크에서 분할된 수십 ~ 수천 바이트 정도의 작은 데이터 덩어리
  • ICMP
  • 패킷을 운반할 때 발생하는 오류 통지, 제어용 메시지 통지할 때 사용
  • ARP
  • IP 주소에 대응하는 이더넷의 MAC 주소를 조회할 때 사용
  • LAN 드라이버
  • LAN 어댑터의 하드워어를 제어
  • LAN 어댑터
  • 케이블에 대해 신호를 송, 수신하는 동작 실행

2.소켓의 실체는 통신 제어용 제어 정보

프로토콜 스택은 내부에 제어 정보를 기록하는 메모리 영역이 존재

이 메모리 영역에 통신 동작을 제어하기 위한 제어 정보를 기록

통신 상대의 IP 주소, 포트 번호, 통신 동작의 진행 상태 등…

소켓은 실체가 없기 때문에 이러한 제어 정보를 기록한 메모리 영역이 소켓이라고 할 수 있음

소켓에는 데이터를 보냈을 때, 응답이 돌아오는지의 여부와 송신 동작 후의 경과 시간 등이 기록되어 있음

프로토콜 스택이 소켓의 정보를 보고 데이터 송신을 포기하거나, 다시 보내는 동작을 실행

프로토콜 스택은 소켓에 기록된 제어 정보를 참조하면서 움직임

3. Socket을 호출했을 때의 동작

Socket 라이브러리의 socket()이나 connect()를 호출했을 때 프로토콜 스택의 내부 동작을 확인해보자

  1. 애플리케이션이 프로토콜 스택에 의뢰하여 하나의 소켓을 만듦
  2. 프로토콜 스택은 소켓 한 개 분량의 메모리 영역을 확보
  3. 초기 상태임을 나타내는 제어 정보를 소켓의 메모리 영역에 기록

소켓을 만들 때 한 개의 메모리 영역을 확보하고 초기 상태라는 것을 이 영역에 기록

소켓이 만들어지면 소켓을 나타내는 디스크립터를 애플리케이션에 알려줌

디스크립터를 통해 프로토콜 스택 내부에 있는 다수의 소켓 중 어떠한 소켓을 가리키는지를 확인할 수 있음

디스크립터만 있으면 소켓을 알 수 있고, 소켓에는 나머지 필요한 정보가 있으므로 프로토콜 스택에서 알 수 있음

이렇게 애플리케이션은 통신 상대의 정보를 일일이 통지받을 필요가 없어짐