HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
📖
공부한 책
/
1%의 네트워크 원리
1%의 네트워크 원리
/2장 TCP/IP의 데이터를 전기 신호로 만들어 보낸다/
프로토콜 스택 내부 & 소켓을 작성한다 - socket()

프로토콜 스택 내부 & 소켓을 작성한다 - socket()

프로토콜 스택의 내부 구성소켓의 실체 = 통신 제어용 제어 정보Socket 라이브러리의 socket( ) 의 동작

프로토콜 스택의 내부 구성

TCP/IP 소프트웨어는 계층 구조이고, 위의 계층이 아래의 계층에 작업을 의뢰하도록 되어 있음
TCP/IP 소프트웨어는 계층 구조이고, 위의 계층이 아래의 계층에 작업을 의뢰하도록 되어 있음
  • 맨 위에 네트워크 애플리케이션 에서 아래로 향하여 데이터 송.수신 등의 일을 의뢰함
    • 애플리케이션의 아래에 Socket 라이브러리가 있고 그 안에 리졸버( DNS 리졸버 )가 내장되어 있음
  • 그 아래가 OS의 내부이고 여기에 프로토콜 스택이 존재함
    • 브라우저나 메일 등의 일반적인 애플리케이션은 TCP를 사용하여 데이터 송.수신
    • DNS 서버에 대한 조회 등 짧은 제어용 데이터를 송.수신 하는 경우에는 UDP 사용
    • 그 아래 IP 프로토콜을 사용하여 패킷 송.수신 동작을 제어
    • 인터넷에서 데이터 운반 시 데이터를 작게 나누어 패킷 이라는 형태로 운반하는데 이 패킷을 통신상대까지 운반하는 것이 IP의 주 역할임
      • ICMP: 패킷 운반할 때 발생하는 오류를 통지하거나 제어용 메시지 통지
      • ARP : IP 주소에 대응하는 이더넷의 MAC 주소를 조사할 때 사용
  • 그 아래 LAN 드라이버는 LAN 어댑터의 하드웨어를 제어
  • LAN 어댑터가 실제 송.수신 동작, 즉 케이블에 대해 신호를 송.수신하는 동작을 실행함

소켓의 실체 = 통신 제어용 제어 정보

  • 프로토콜 스택은 내부에 제어 정보를 기록하는 메모리 영역을 가지고 있음. 여기에 통신 동작을 제어하기 위한 제어 정보를 기록함
    • 대표적 제어 정보 : 통신 상대의 IP 주소, 포트 번호, 통신 동작이 어떤 진행 상태에 있는가(ESTABLISHED, LISTENING .. )
  • 소켓은 개념적인 것이어서 실체가 없으므로 굳이 말하자면 이 제어 정보가 소켓의 실체
  • 프로토콜 스택은 이 제어 정보를 참조하면서 동작함
    • 소켓에 기록되어 있는 상대측의 IP 주소, 포트 번호를 보고 그 대상으로 데이터 송신
    • 소켓에는 송신 후 응답이 돌아오는지 여부, 송신 동작 후의 경과 시간 등이 기록되어 있음
💡
소켓의 실체 = 통신 제어용 제어 정보 or 제어 정보를 기록한 메모리 영역 프로토콜 스택은 소켓에 기록된 제어 정보를 참조하면서 움직임
소켓 내용 표시 명령어 netstat → netstat
메시지 송신 동작
메시지 송신 동작

Socket 라이브러리의 socket( ) 의 동작

  • socket이 호출되면 프로토콜 스택이 최초로 하는 일은 소켓 한 개 분량의 메모리 영역을 확보하는 것임
    • 메모리 영역 확보 — 제어 정보를 담을 그릇을 준비
    • 메모리 영역이 확보되면 초기 상태라는 것을 이 영역에 기록함
    • 소켓에는 누구와 누가 통신하고 있는지, 그리고 그것이 어떤 상태로 있는지 등의 정보가 전부 기록되어 있음
  • 소켓이 만들어지면 소켓을 나타내는 디스크립터를 애플리케이션에 알려줌