Ch 5. 윈도우 네트워크 프로그래밍(1) - 윈도우 소켓과 관련 함수


윈도우 네트워크 프로그래밍

클라이언트 - 서버 모델

  • 서버와 클라이언트는 단일 프로그램으로 작동
  • 서버는 클라이언트의 연결요청을 대기, 클라이언트에게 정보 및 서비스를 제공
  • 클라이언트는 서버에게 정보 및 서비스를 요청하고 응답을 기다림
  • ex) 웹 사이트는 아파치와 같은 웹 서버가 서버 역할을 수행, 사용자가 사용하는 웹 브라우저(크롬, 엣지)는 클라이언트의 역할을 수행
  • 클라이언트는 서버와 동일한 컴퓨터에서 다른 프로세스로 존재할 수 있고 다른 컴퓨터에서 연결된 네트워크로 존재할 수 있음

네트워크 프로그래밍

  • 원 거리 사용자간의 원활하고 빠른 의사 소통을 위해 활용
  • 네트워크로 연결되어 있는 두 호스트 간의 데이터 송/수신이 이루어짐
  • 파일 입/출력과의 차이점은
  • 소켓(socket)을 사용한 프로그래밍 방식
자세히 보기

Ch 4. TCP(2) - TCP 연결과 흐름제어


TCP 연결 설정

  • 능동적 열림(Active open)
    • 클라이언트는 서버가 열어 놓은 포트로 TCP연결을 요청
  • 수동적 열림(Passive open)
    • 서버는 네트워크 응용을 수행하기 위해 정해진 포트를 열고 클라이언트의 요청을 기다림

세 방향 핸드쉐이크(Three-way handshake)

  • 두 호스트는 TCP 연결을 위해 3개의 패킷이 송/수신되어야함
  1. 클라이언트는 서버에게 자신을 연결하라는 의미로 클라이언트 측 SEQ번호(순서번호)와 함께 SYN = 1 플래그가 저장된 세그먼트를 전송
  2. 이를 수신한 서버는 클라이언트에게 이에 대한 수락으로 ACK=1, 서버를 클라이언트에 연결하라는 의미로 SYN=1 플래그를 저장하며 클라이언트로부터 수신한 패킷의 SEQ+1를 ACK필드 값에, 서버 측의 순서번호를 SEQ필드에 저장하여 전송
  3. 서버로부터 SYN 패킷가 수신된 클라이언트는 서버에게 순서번호를 인지했다는 의미로 ACK=1플래그, ACK 필드 값은 수신한 패킷의 SEQ+1로 저장하여 전송
자세히 보기

Ch 4. TCP(1) - TCP 헤더, 타이머


TCP(Transmission Control Protocol)

  • 전송 제어 프로토콜의 약자
  • IP를 통해 확인된 목적지 주소로 데이터를 전송하는 프로토콜로서 전송 계층(4계층)의 기능을 수행
  • 두 호스트 간에 전송되는 데이터와 메시지의 형식을 정의함

TCP의 특징

  • 연결형 : IP계층 위에 가상의 회선을 설정하여 종단간 데이터 송/수신 서비스를 제공
  • 신뢰성 : 데이터 송/수신 확인을 통한 신뢰성있는 통신 서비스 제공 (ACK 필드)
  • 흐름 제어 : 송/수신측의 데이터 처리 속도 차이를 해결하기 위한 방법, 처리할 수 있는 범위 내에서 데이터를 보내도록 제어 (슬라이딩 윈도우, 슬로우 스타트)
  • 혼잡 제어 : 송신측의 데이터 전달과 네트워크의 데이터 처리 속도 차이를 해결하기 위한 방법, 혼잡 현상을 방지하거나 제어 (혼잡 회피)
  • 스트림 통신 : 데이터를 바이트 단위로 나누어 전송(버퍼 사용)

포트(Port)

  • 호스트 내의 프로세스가 통신을 수행하기 위해 할당 받는 고유 번호
  • 데이터 링크 계층(2계층)의 MAC 주소, 네트워크 계층 (3계층)의 IP 주소와 같이 전송 계층(4계층)에서 사용하는 식별 번호
  • 포트 번호는 16비트로 이루어져 있으며 번호의 범위에 따라 사용 목적이 나뉘어져 있음
    • 0 ~ 1023번 : 잘 알려진 포트(well-known port), HTTP(80), FTP(20)와 같은 포트로 특정한 쓰임새를 위해 IANA에서 할당한 TCP, UDP포트
    • 1024 ~ 49151번: 등록된 포트(registered port), 기업이나 사업자들을 위해 IANA에서 할당한 포트
    • 49152 ~ 65535번: 동적 포트(dynamic port), 일반 사용자들이 사용할 수 있는 포트
  • 포트 번호는 IP주소 뒤에 콜론으로 표기됨 (127.0.0.1:61000)

TCP 소켓

  • TCP/IP 통신 인터페이스
  • 두 프로세스의 소켓은 프로토콜, 송신자 IP주소, 송신자 프로세스 번호, 수신자 IP 주소, 수신자 프로세스 번호로 식별
자세히 보기

Ch 3. IPv6


IPv6

IPv6의 특징

확장된 주소 공간

  • IPv4의 주소 부족 문제, 보안 문제를 해결하기 위하여 주소 체계를 128비트로 확장한 인터넷 프로토콜 주소.

헤더 단순화

  • IPv4에서 자주 사용하지 않는 헤더 필드를 제거함. (단편화 관련 필드, 체크섬 필드 삭제)
  • 추가적으로 필요한 기능은 확장헤더를 사용하여 수행한다.
  • IPv6의 기본 헤더는 40바이트

보안 / 개인보호에 관련된 기능 지원

  • 보안과 관련된 인증절차, 데이터 무결성 보호, 선택적인 메시지 발신자 확인 기능 등을 프로토콜 차원에서 지원함.
  • 확장 헤더를 이용하여 종단간 암호화 기능을 지원, 패킷에 대한 변조 방지.

자동 주소 설정

  • IPv6에서는 라우터가 제공하는 네트워크 프리픽스 정보와 MAC주소를 사용하여 자동으로 로컬 IPv6 주소를 생성한다.

상태 보존형 자동 설정 (Stateful auto-configuration)

  • DHCP 서버로부터 모든 네트워크 정보를 받는 방식
  • 주소를 요청받은 DHCP는 호스트에 할당 가능한 주소를 전달한다.
  • 장점: 주소를 효율적으로 이용하고 인증과정을 통해 보안 유지가 가능
  • 단점: 서버에 대규모 데이터베이스가 준비되어야 함
자세히 보기

Ch 2. IPv4(4) - 멀티캐스팅


멀티캐스트

  • 동일한 정보를 여러 사람에게 전송시 필요한 몇몇 호스트들에만 메시지를 전달하는 방법
  • 전달받을 호스트의 수만큼 데이터를 패킷을 보유해야하는 유니캐스트에 비하여 멀티캐스트는 하나의 패킷을 전송하여 라우터에서 복사하여 라우터 내 각 호스트들에게 전달하는 방식이므로 대역폭 낭비와 지연 시간을 줄일 수 있음.
  • 멀티캐스트를 지원하지 않는 라우터는 멀티캐스트를 지원하는 라우터 사이에서 유니캐스트와 같이 작동하는 터널링 기법을 사용.

멀티캐스트의 기본 요소

호스트 그룹 정의(multicast group)

  • 멀티캐스트 패킷을 수신하는 호스트들의 집합
  • 각각의 그룹은 멀티캐스트 주소로 구분

그룹 관리(group management protocol)

  • 멀티캐스트 그룹은 필요에 따라 추가, 삭제되는 동적인 구조를 갖는다.
  • 그룹 관리를 위한 새로운 메커니즘으로 IGMP사용

라우팅 경로 설정(multicast routing protocol)

  • 목적지에 도달하기 위한 경로는 다양하게 존재한다.
  • 트리를 구성하여 라우트간 빠른 경로를 탐색한다.
자세히 보기

Ch 2. IPv4(3) - IP주소 관련 프로토콜


IP주소 관련 프로토콜

  • 논리적인 차원의 데이터 전송은 IP주소를 통해 이루어지지만 실제 물리 계층에서의 전송은 물리 계층 주소를 통해서 이루어진다.
  • 논리 주소(IP address)와 물리 주소(MAC address) 사이의 변환 프로토콜이 필요.

ARP(Address Resolution Protocol)

  • 동일 네트워크에 존재하는 호스트에 대해 목적지의 IP주소에 해당하는 물리 주소를 찾는 프로토콜.
  • ARP 메시지
    • ARP 요청 메시지 (ARP Request) - 특정 IP 주소에 대한 물리 주소를 요구, 호스트는 ARP 요청 메시지를 보낼 때 수신측 물리 주소를 모르기 때문에 물리 계층 브로드캐스트로 전송
    • ARP 응답 메시지 (ARP Response) - 물리 주소 정보를 알림, ARP 요청 메시지를 수신한 호스트/라우터는 자신의 물리 주소를 요구하는 경우 ARP 응답 메시지 전송.
  • 특정 주소에게서 물리 주소를 받기 위해 호스트는 브로드캐스트로 ARP 요청 메시지를 전송하며, 이를 수신한 호스트는 자신의 IP주소와 같을 때, 자신의 물리 주소가 담긴 ARP 응답 메시지를 전송한다.
  • 다른 서브넷에 위치하는 호스트의 MAC주소를 요청하는 경우, 라우터가 자신의 MAC 주소를 응답하여 라우터에서 데이터를 대신하여 받고 호스트에게 데이터를 전송한다(Proxy ARP).
자세히 보기

Ch 2. IPv4(2) - IP주소 관리 기법


IP주소 체제

IP주소

  • 모든 장비들이 갖는 영구적이지 않고 고유한 논리적 네트워크 식별자.

클래스별 분류

  • IP주소는 네트워크를 구분하기 위한 네트워크 식별자(netid)와 네트워크 내에서 호스트를 구분하기 위한 호스트 식별자(hostid)로 구성.
  • 호스트 식별자는 0.0.0.0…(네트워크 호스트)과 255.255.255.255….(브로드캐스트)를 제외하여 사용
  • 네트워크와 호스트의 주소 개수에 따라 5개의 클래스로 구분할 수 있음
    • 클래스 A - 처음 1비트 값이 “0”인 주소, 7비트를 netid에 할당하며 나머지 24비트를 모두 hostid로 사용, 큰 규모의 호스트를 갖는 기관에서 사용한다.
    • 클래스 B - 처음 2비트 값이 “10”인 주소, 15비트를 netid에 할당하고 나머지 16비트를 모두 hostid로 사용
    • 클래스 C - 처음 3비트 값이 “110”인 주소, 네번째 바이트만 hostid를 위해 주어짐, 네트워크마다 $2^8-2=254$개의 호스트를 수용할 수 있기 때문에 작은 규모의 네트워크에서 사용.
    • 클래스 D - 처음 4비트 값이 “1110”인 주소, netid와 hostid의 구분이 없으며, 전체 주소가 멀티캐스트용으로 사용됨.
    • 클래스 E - 처음 4비트 값이 “1111”인 주소, 추후 사용을 위해 예약된 주소
자세히 보기

Ch 2. IPv4(1) - IP헤더


IP(Internet Protocol)

IP는 OSI 참조 모델의 네트워크 계층 기능을 수행하며 패킷 전송을 위한 주소 정의 및 관리와 라우팅을 담당한다.

IP의 특징

  1. 비신뢰성(Unreliable)
    • 가능한 범위 내에서 패킷을 목적지까지 전달하는 최선형 서비스(Best Effort Service)
  2. 비접속형(Connectionless)
    • 연결 설정 없이 패킷을 전송
    • 서로 다른 경로로 패킷이 전송될 수 있으며, 순서도 바뀔 수 있다.
  3. 주소 지정
    • 네트워크 내의 노드를 고유하게 지정하기 위한 수단으로 IP주소를 사용
  4. 경로 결정
    • 목적지 IP주소를 기반으로 패킷 전달 경로를 판단(Routing Protocol).

IP패킷 구성


자세히 보기

Ch 1. OSI와 인터네트워킹 장비(2) - 인터네트워킹 장비


인터네트워킹 장비

리피터(Repeater)

  • OSI 참조 모델의 물리계층에서 동작하는 장비
  • 전기나 광 신호를 증폭하는 기능을 수행
      - 매체를 통해 전달되는 신호는 감쇄(auttenuation)가 발생한다.
  • 오류 신호도 같이 증폭한다는 단점이 존재함
  • 리피터에 의해 연결된 네트워크는 완전히 하나의 네트워크로 동작한다.
  • 전송거리에 의한 전송지연의 영향을 받기 쉬워 연결에 제한이 존재한다.
자세히 보기

Ch 1. OSI와 인터네트워킹 장비(1) - OSI


Internetworking Architure

  1. 개별 네트워크들의 내적 일관성을 유지한다. 인터넷에 접속하기 위해 개별 네트워크의 변경이 불필요하다.
  2. 패킷 오류 발생시 소스로부터 재전송한다. (Stupid Network)
  3. 게이트웨이 또는 라우터라 불리는 블랙박스를 이용해 네트워크들을 연결한다.
  4. 운용 측면에서 볼 때 전체적인 통제(global control)는 불필요하다.
자세히 보기