Home 1%의 네트워크 원리 (07) - TCP/IP의 데이터를 전기 신호로 만들어 보냄 1
Post
Cancel

1%의 네트워크 원리 (07) - TCP/IP의 데이터를 전기 신호로 만들어 보냄 1

소켓을 작성

1%의 네트워크 원리 (07) - TCP/IP의 데이터를 전기 신호로 만들어 보냄 1

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

01 소켓을 작성

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

  • 애플리케이션
    • 네트워크 애플리케이션 (웹 브라우저, 웹 서버, 메일 서버 등 프로그램)
      • Socket 라이브러리
        • 리졸버
  • OS
    • 프로토콜 스택
      • TCP(커넥션 사용), UDP(커넥션 사용 x)
      • IP: 패킷 운반, 경로 결정
        • ICMP
        • ARP
  • 드라이버 소프트웨어
    • LAN 드라이버: LAN 어댑터 제어
  • 하드웨어
    • LAN 어댑터: 케이블에 대해 실제 신호를 송·수신 동작

TCP(Transmission Control Protocol)

  • 브라우저나 메일 등의 일반적인 애플리케이션이 사용해 데이터를 송·수신

UDP(Uer Datagram Protocol)

  • DNS 서버에 대한 조회 등에서 짧은 제어용 데이터를 송·수신

IP(Internet Protocol)

  • IP 프로토콜을 사용해 패킷을 송·수신

ICMP(Internet Control Message Protocol)

  • 패킷을 운반할 때 발생하는 오류를 통지하거나 제어용 메시지를 통지할 때 사용

ARP(Address Resolution Protocol)

  • IP 주소에 대응하는 이더넷의 MAC 주소를 조사할 때 사용

패킷

  • 네트워크에서 데이터는 수십~수천 바이트 정도의 작은 덩어리로 분할되어 운반됨
  • 이렇게 분할된 데이터의 덩어리

MAC 주소

  • IEEE에서 표준화된 LAN 방식의 기기는 모두 같은 형식의 주소 사용
  • 이 주소를 MAC 주소라 함

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

프로토콜 스택

  • 내부에 제어 정보를 기록하는 메모리 영역을 가짐
  • 여기에 통신 동작을 제어하기 위한 제어 정보를 기록
  • 이 제어 정보가 소켓의 실체. 혹은 제어 정보를 기록한 메모리 영역이 소켓의 실체
  • 프로토콜 스택은 소켓에 기록된 제어 정보를 참조해 동작
  • 윈도우에서 netstat 명령어로 소켓 확인 가능
1
2
3
4
5
Proto      Local Address      Foreign Address      State        PID

TCP        0.0.0.0:135        0.0.0.0:0            LISTENING    1200
TCP        118.42.2.212:2477  222.233.53.144:80    ESTABLISHED  1720
UDP        0.0.0.0:445        *:*                               4
  • PID: 해당 소켓을 사용하고 있는 프로그램의 PID
  • State: 통신 상태
    • LISTENING: 상대의 접속을 기다리는 상태
    • ESTABLISHED: 접속 동작이 끝나고 데이터가 통신중인지 나타냄
  • Foreign Address: 통신 상대측(원격측)의 IP 주소, 포트 번호
    • 0.0.0.0:0: 아직 통신 시작하지 않음. 특정 IP 주소나 포트와 연결되지 않았음
    • *:*: UDP는 소켓을 상대측의 주소나 포트와 연결하지 않음. 상대측은 *:*가 됨
  • Local Address: netstat 명령을 실행한 기계 자체(로컬측)의 IP 주소, 포트 번호
    • 여러 개의 LAN 어댑터가 장착되었다면 여러 개의 IP 주소 존재
  • Proto: 프로토콜의 종류. TCP, UDP
  • 한 행이 하나의 소켓을 나타냄
  • 소켓 생성은 새로운 한 행의 제어 정보를 추가하는 것

PID(Proccess ID)

  • 각 프로그램을 식별하기 위해 OS가 할당하는 번호

3 Socket을 호출했을 때의 동작

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
          프로토콜 스택                 애플리케이션(브라우저)


          IP 담당     UDP 담당

DNS     <-------------- 송신 <-------   <메모리 영역> = gethostbyname(...);
서버    --------------> 수신 ------->


                      TCP 담당
웹                    소켓 작성 <-----  <디스크립터> = socket(...);
서버                            ----->

        <-------------- 접속 <--------  connect(...);
        -------------->      -------->

        <-------------- 송신 <--------  write(...);
                             -------->

        --------------> 수신 <--------  <수신 데이터 길이> = read(...);
                             -------->

        <------------ 연결 끊기 <-----  close(<디스크립터>);
        ------------>

                      소켓 말소 ----->

소켓 작성

  • 소켓 한 개 분량의 메모리 확보
  • 초기 상태 기록

디스크립터

  • 프로토콜 스택 내부의 다수의 소켓 중 어느 것을 가리키는지 나타내는 정보

참고

성공과 실패를 결정하는 1%의 네트워크 원리

This post is licensed under CC BY 4.0 by the author.

1%의 네트워크 원리 (06) - 웹 브라우저가 메시지를 생성

1%의 네트워크 원리 (08) - TCP/IP의 데이터를 전기 신호로 만들어 보냄 2