관리 메뉴

너와 나의 스토리

[Computer Network] 프로토콜 스택 / Socket 통신 본문

Computer Networks/이론

[Computer Network] 프로토콜 스택 / Socket 통신

노는게제일좋아! 2021. 6. 28. 17:25
반응형

프로토콜 스택

  • 프로토콜 스택은 내부에 제어 정보를 기록하는 메모리 영역을 가지고 있으며, 여기에 통신 동작을 제어하기 위한 제어 정보를 기록한다. 
    • 대표적인 정보: 통신 상대의 IP 주소&포트 번호, 통신 동작의 진행 상태
    • 이러한 제어 정보를 기록한 메모리 영역이 소켓의 실체라고 생각해도 좋다.
  • 프로토콜 스택: TCP vs UDP
    • DNS 서버는 UDP 프로토콜을 사용하여 데이터를 송수신하고
    • 웹 서버는 TCP 프로토콜을 이용해 데이터를 송수신한다.
    • Socket programming with UDP and TCP

 

TCP 프로토콜을 이용하여 메시지를 송신하는 동작 4단계

  1. 소켓을 생성
  2. 서버에 접속
  3. 데이터를 송/수신
  4. 서버에서 연결을 끊어 소켓을 말소
  5. 그 후
    • IP와 이더넷의 패킷 송수신 동작
    • UDP 프로토콜을 이용한 송수신 동작

 

 

1. 소켓 생성

  • 소캣 생성
    1. 소켓 한 개 분량의 메로리 영역 확보
    2. 소켓이 아직 송수신 동작이 시작되지 않은 초기상태임을 나타내는 제어 정보를 메모리 영역에 기록
  • 소켓이 만들어지면 소켓을 나타내는 디스크립터를 애플리케이션에 알려줌
    • 디스크립터: 프로토콜 스택의 내부에 있는 다수의 소켓 중 어느 것을 가리키는지 나타냄

 

2. 서버측 소켓에 접속

  • 소켓을 만든 후, 애플리케이션(브라우저)는 connect를 호출해 서버측 소켓에 접속합니다.
  • 소켓은 이더넷이나 통신 회선처럼 케이블로 연결되는 것이 아니다.
    • 그러므로 IP 주소, 포트 번호를 프로토콜 스택에 알리는 동작이 필요하다.  
      • 브라우저는 URL을 바탕으로 서버의 IP 주소를 조사하고, 포트 번호는 80번을 사용하도록 규칙으로 정해져 있다.
    • 이것이 접속 동작의 한 가지 역할이다.
  • 서버측에도 소켓이 만들어져있다.
    • 클라이언트에서 자신의 IP 주소와 포트번호를 서버측에 전달해 데이터 송수신 요청을 한다.
    • 이를 통해 서버측의 프로토콜 스택도 클라이언트의 정보를 가질 수 있게 된다.

 

 

3. 데이터 송수신

  • 송/수신처의 포트 번호 각각과 스퀀스 번호 등의 정보를 가지는 TCP 헤더를 만듭니다.
  • 이 헤더를 IP 담당 부분에 건네주어 송신합니다.
    • 그러면 IP 담당 부분이 이것을 받아 TCP 담당 부분에 건네줍니다.
    • 이후 서버측 TCP 담당 부분이 tcp 헤더를 조사하여 접속을 기다리는 해당 소켓을 발견하고, 여기에 필요한 정보를 기록합니다.
    • 그리고 접속 동작이 성공했다고 ACK 비트를 보냅니다.
  • 프로토콜 스택은 받은 데이터를 곧바로 송신하는 것이 아니라 일단 자체의 내부에 있는 송신용 버퍼 메모리 영역에 저장합니다.
    • 어느 정도까지 저장한 후 패킷 단위로 나눠서 데이터를 송신합니다.
  • 좀 더 자세한 내용은 이 곳을 참고해 주세요.

 

 

 

4. 연결 끊기

  • 애플리케이션이 송신해야 하는 데이터를 전부 송신 완료한 경우 연결 끊기 단계에 들어간다. 
  • 좀 더 자세한 내용은 이 곳을 참고해 주세요.

 

 

 

반응형
Comments