네트워크 일반2

BodeulMaNN·2023년 4월 5일
0

인터넷 프로토콜과 주소 체계

통신 프로토콜:

  • 통신을 원하는 두 객체 간에 무엇을, 어떻게, 언제 통신할 것인지 서로 약속 해 놓은 규정
  • 정보통신에서 통신을 통제하는 토규칙들을 규정
    단말기(DTE) - 모뎀(DCE) --------모뎀(DCE) - 호스트컴퓨터(DTE)

OSI 7 계층 프로토콜

  • X.200으로 알려진 국제 네트워크 표준 규약

1. 인터넷 프로토콜

인터네트워크: LAN이나 WAN등 독립적인 네트워크를 상호 연결하여 만든 복잡한 네트워크로 인터네트워크를 연결하는 과정이나 방법, 다양한 하드웨어-소프트웨어 기술 필요

인터넷 : 인터네트워크로 구성된 대표적인 네트워크들의 네트워크
i. 미국방성 알파넷이 시초로 연구기관에 보급되며 기능이 확대되었다
ii. 이후 인터넷 기반 프로토콜인 TCP/IP도 생성되었다

인터넷 프로토콜

  • TCP/IP는 인터넷에 기반을 둔 프로토콜
  • 네트워크 접근 계층(이더넷, FDDI, 토큰링 등), 인터넷 계층(IP, ICMP, ARP, RARP), 전송 계층(TCP, UDP), 응용 계층(HTTP, DNS 등)

![[Pasted image 20230405092151.png]]

![[Pasted image 20230405092103.png]]

인터넷 데이터 전송 과정

일반적인 네트워크 계층구조와 같이 송신 측에서 데이터를 캡슐화하고 수신 측에서 캡슐해제한다

캡슐 단위 : 메시지(응용) <--> 세그먼트(전송) <--> 데이터그램(네트워크) <--> 프레임(네트워크 접근)

인터넷의 주소 체계

IP주소 또는 인터넷 도메인으로 표현한다

  • IP주소 체계 : 숫자로 이뤄진 컴퓨터가 인식 가능한 주소 체계
  • 인터넷 도메인 : 무자로 이뤄진 사람이 인식 가능한 주소 체계
  • IP주소와 도메인은 컴퓨터마다 유일하게 배정되며, 인터넷 계층의 IP에서 정의 및 처리한다. 또한 인터넷 주소는 국가별 관리 기관에서 관리하며 IANA, APNIC, KRNIC 등이 있다.

인터넷 도메인

영문자와 .을 혼합해 호스트 컴퓨터의 주소를 표현한 것

도메인명 규칙

최대 256자
숫자와 영문자 조합
하이픈 사용 가능
전 세계적으로 중복되지 말아야함

  • Domain Name System (DNS) : 도메인명과 IP주소를 대응 시켜주는 분산 시스템

인터넷 계층별 프로토콜

2. 네트워크 접근 계층 프로토콜

네트워크 매체를 통해 다른 네트워크로 데이터 전송한다.
이더넷, FDDI, 토큰 링, X.25 등
전달하는 데이터 단위 : 프레임

3. 인터넷 계층 프로토콜

발신지에서 목적지로 데이터 전송을 담당한다. 주소 지정, 라우팅 기능을 제공한다.
IP, ICMP, IGMP, ARP, RARP 등
전단하는 데이터 단위 : 데이터 그램

IP : 데이터그램을 전송하도록 라우팅 기능 수행하고 경로 설정과 주소 지정을 한다 .
ICMP : IP에서 발생하는 문제를 처리하기 위한 프로토콜. 오류/상황 보고 및 경로 제어 정보 전달 기능 수행
IGMP : 멀티캐스트 기능을 수행으로 수신자 그룹에 메시지를 동시에 전송하는데 사용한다
ARP : IP 주소를 MAC(이더넷) 주소로 변환한다
RARP : MAC 주소(이더넷 주소)를 IP 주소로 변환한다

전송 계층 프로토콜

TCP (Transmission Control Protocol)

두 종단 간 연결을 설정한 후 세그먼트 단위 데이터를 전송하는 연결형 프로토콜

응용 프로그램 간 메시지 전달을 위해 포트 번호를 이용하고 다중연결을 허용한다
흐름제어와 혼잡제어를 수행한다
TCP의 연결지향형 방식 = 신뢰성 스트림 서비스

TCP 포트 번호

TCP가 상위계층으로 전송하거나 상위 계층에서 TCP로 전송할 때 사용하는 데이터 이동 통로

  • 0~65535번 사용 가능
  • 0~1023번은 주요 인터넷 서비스에 고정 할당
  • 소켓 주소 : IP 주소 + 포트 번호 조합. 각 종단 프로세스 구분하는 주소로 사용

TCP 세그먼트 전송

TCP는 슬라이딩 윈도우를 사용한 피기백 방식 흐름 제어를 지원한다

  • TCP 전송 오류의 처리
    수신 측 : 변형된 프레임 수신 시 분실로 간주, 대기
    송신 측 : ACK를 받지 못해 타임아웃 발생, 프레임 재전송
    수신 측 : 동일한 순서번호 프레임 재수신 시 버리고 ACK (ACK 분실로 판단)

UDP

두 종단 간 연결을 설정하지 않고 데이터를 고속으로 교환하는 비연결형 프로토콜

  • 비연결형이라 데이터가 제대로 전송 됐는지 확인하지 않는다
  • 신뢰성이 낮고 흐름제어 및 오류 검출 등 기능이 없다
  • 패킷을 빠르게 전송해햐 하는 응용 계층에서 사용한다
  • 오버헤드 크기가 크지 않고, 연결 등에 대한 상태 정보를 저장하지 않는다

TCP vs. UDP

응용 계층 프로토콜

인터넷 프로토콜의 최상위 계층으로 최종 사용자에게 인터넷 서비스를 제공한다

  • 대부분 클라이언트-서버 모델로 구현된다
  • 연결 방식에 따라 연결형(TCP/IP 사용)과 비연결형(UDP/IP 사용)으로 분류된다

HTTP

인터넷에서 하이퍼텍스트 문서를 교환하는데 사용하는 통신 규약

  • 인터넷을 이용한 WWW에 기반을 두고 정보 공유
  • 클라이언트와 서버 방식으로 작동
    웹 서버에 저장된 데이터를 URL로 표기
  • Uniform Resource Location : 인터넷 상에서 특정 자원의 고유한 위치를 표현하는 방법
    프로토콜 종류 + 서버 주소 + 폴더 + 파일이름으로 구성
    예) http://www.hufs.ac.kr/~shko/2020-lecture/network/report.html

HTTP 도메인명 IP주소 변환

  • 도메인명과 대응하는 IP주소 정보를 가진 DNS 서버를 통해 변환

HTTP : 웹브라우저의 동작

  • 웹 문서 전송

File Transmission Protocol

파일을 효율적으로 주고 받기 위한 프로토콜

인터넷을 이용해 컴퓨터끼리 파일을 송수신한다. 송수신을 위해선 원격 호스트 컴퓨터를 이용할 수 있는 권한이 필요하다. 계정 없이도 접속할 수 있도록 anonymous 계정을 제공한다.

  1. FTP 서버 포트 21 개방 후 대기
  2. FTP 클라이언트에서 포트 21로 접속, 송수신 요청
  3. 서버와 클라이언트 사이 파일 전송
  4. 전송 완료 시 연결 해제

텔넷

원격지에서 컴퓨터를 이용한 가상 단말 기능을 구현하는 프로토콜.

Simple Mail Transfer Protocol

전자우편 서비스를 사용할 수 있는 프로토콜


4. IPv4

8비트 정수 4개와 .으로 표현. 총 32비트. 네트워크 번호 + 호스트 번호로 구성

IPv4의 클래스

  • 주소 체계 : 처음 4개 비트로 클래스 5종류를 구분한다
    클래스 A : 첫 비트가 0. 네트워크 8bit, 호스트 24bit. 대형 기관
    클래스 B : 첫 두 비트가 10. 네트워크 16bit, 호스트 16비트. 중형 기관
    클래스 C : 첫 세 비트가 110. 네트워크 24bit, 호스트 8bit. 소형 기관
    클래스 D : 첫 네 비트가 1110. 나머지 28비트 멀티캐스트용으로 사용
    클래스 E : 첫 네 비트가 1111. 예비/실험용

클래스 A

  • 8bit로 0~127 네트워크 구성. 0,127을 제외한 126개 라우터 구성 가능
    0 : 사용 x, 127 : 시스템 루프백
  • 24bit로 0.0.0~255.255.255 호스트 번호 구성. 0.0.0, 255.255.255 제외 2^24-2개 호스트 사용 가능
    0.0.0 : 네트워크(라우터) 주소, 255.255.255 : 브로드캐스트 주소
  • 네트워크 마스크 : 255.0.0.0

클래스 B

  • 16bit로 128.0~191.255 네트워크 구성. 2^14개 라우터 구성 가능
  • 16bit로 0.0~255.255 호스트 번호 구성. 0.0, 255.255 제외 2^16-2개 호스트 사용 가능
    0.0 : 네트워크(라우터) 주소, 255.255 : 브로드캐스트 주소
  • 네트워크 마스크 : 255.255.0.0

클래스 C

  • 24bit로 192.0.0~223.255.255 네트워크 구성. 2^21개 라우터 구성 가능
  • 8bit로 0~255 호스트 번호 구성. 0, 255 제외 2^8-2개 호스트 사용 가능
    0 : 네트워크(라우터) 주소, 255 : 브로드캐스트 주소
  • 네트워크 마스크 : 255.255.255.0

클래스 D

  • 첫 번째에서 네 번째 비트가 각각 1, 1, 1, 0인 주소
  • 나머지 28비트를 멀티캐스트용으로 사용

클래스 E

  • 첫 번째에서 네 번째 비트가 각각 1, 1, 1, 1인 주소
  • 향후 사용하려고 남겨둔 예비-실험용 주소

서브넷 주소

  • IP주소를 네트워크 번호, 호스트 번호로 구분하지 않고 호스트 번호 부분을 서브넷 번호, 호스트 번호로 세분하는 방식
  • 클래스 C에서는 사용할 수 없는 비트수가 적기 대문에 사용하지 않음
  • 사용 시 외부 라우터가 내부 네트워크 조직에 대해 모르게 할 수 있으며 라우팅 테이블의 크기를 줄이는 효과
  • 서브넷 마스크 서브넷과 호스트 부분을 구분해 주는 역할을 함
  • 불필요한 브로드캐스팅 메시지를 제한할 수 있으며, 트래픽의 관리 및 제어가 가능 -> 효율적인 IP관리 기능

서브넷 마스크

  • 서브넷을 만들 때 사용하는 마스크
  • 서브넷과 호스트 부분을 구분해 주는 역할을 함
  • 모든 IP주소에는 디폴트 서브넷 마스크가 있음
  • 클래스의 기본 성질대로 쓰는 경우에는 디폴트 서브넷 마스크를 사용
  1. 클래스 C에서 서브넷 마스크를 적용해야 할 부분은 맨 마지막 8비트
  2. 이 중에서 4~5개의 호스트를 연결하려면 적어도 3비트 필요
  3. 나머지 5비트를 가지고 최대 32(2^5)개의 서브넷 만들 수 있음
  4. 처음 다섯 비트는 서브넷 번호로 사용하고 이후 3 비트는 호스트 번호로 사용
  5. 서브넷 번호로 사용할 비트는 1을 할당하고 나머지 비트는 0을 할당한 값은 11111000
  6. 이를 10지누로 바꾸면 248
  7. 최종적으로 서브넷을 구성하기 위한 서브넷 마스크 값은 255.255.255.248

데이터그램

  • 헤더와 데이터로 구성되며, 헤더 부분에 다양한 정보가 들어있음
    ![[Pasted image 20230405112340.png]]

Version은 4bit로 이루어져 있고, IP 프로토콜의 version을 의미한다.

Header Length은 4bit로 이루어져 있고, 헤더의 길이를 의미한다.

IPv4의 헤더 길이는 20 ~ 60바이트의 크기를 가지기 때문에 여기의 값에 4를 곱해주어야 한다.

Type of Service는 8bit로 이루어져 있고, IP 데이터그램의 서비스를 의미한다.

FTP나 DNS, SMTP 같은 서비스의 유형을 알려준다.

Total Packet Length는 헤더와 데이터를 합친 전체 길이를 의미하고, 16bit로 이루어져 있다.

identification는 16bit로 이루어져 있고, 패킷이 전송될 때 구분을 하기 위해서 붙은 식별 번호를 뜻한다.

식별 번호 때문에 IP 데이터그램이 단편화되었을 때 단편화된 데이터그램이 원래 어떤 데이터그램에 속해 있는 지를 알 수 있다.

Flags는 3bit로 이루어져 있고, 프래그먼트 패킷의 상태나 생성 여부를 결정하는 플래그이다.

IP 데이터그램이 단편화됬는지 안됬는지를 나타낸다.

Fragmentation Offset은 조각나기 전 원래의 데이터그램의 바이트 범위를 나타내고, 13bit로 이루어져 있다.

Time-to-live는 데이터을 전달할 수 없어서 소멸되기 이전에 데이터가 이동할 수 있는 단계의 수 즉, IP패킷의 수명을 나타낸다.

총 8bit로 이루어져 있고, TTL이라고도 부른다.

Protocol은 어느 상위계층 프로토콜이 데이터 내에 포함되었는가를 보여주고, 8bit로 이루어져 있다.

Header Checksum은 Header 필드의 오류를 검출하고, 16bit로 이루어져 있다.  

Source IP Address는 송신 측의 IP 주소를 나타내고, 32bit로 이루어져 있다.

Destination IP Address는 목적지 IP 주소를 나타내고, 32bit로 이루어져 있다.

Options는 선택사항 옵션이다. 선택사항에 따라 헤더의 크기가 달라진다.

IPv4 사설 IP

컴퓨터가 인터넷에 접속하려면 고유(공인) IP 주소가 있어야한다. 인터넷에 연결하지 않고 개별적으로 구성한 네트워크에서는 사설 IP를 사용할 수 있다. NAT 서버를 사용하면 사설 IP를 공인 IP로 변환하여 인터넷에 접속할 수 있다. IPv4의 주소 부족 문제를 해결하는 방법으로 사용한다.

  • 공인 IP 주소와 사설 IP 주소는 범위가 정해져 있다

IPv4 데이터 단위 : 데이터 그램

헤더와 데이터로 구성되면 헤더 부분에 다양한 정보가 있다

  • 데이터그램의 최소 길이는 576B, 최대 길이는 64KB이다

IPv4 라우팅

송신지에서 목적지로 패킷을 전송할 때 중간 노드를 경유하여 연결하는 기능

  • 여러 라우팅 알고리즘을 실행하여 라우팅 테이블에 경로 정보 저장

  • 현재 경로가 유효한지 지속적으로 확인하고, 더 좋은 경로 발견 시 대체

  • 라우팅 테이블 : 전송 과정에서 라우터가 경로를 쉽게 찾도록 하는 도구

  • IP라우팅: 송신지에서 목적지로 패킷을 전송할 경로를 직접 연결하지 않고, 중간 노드를 경유하여 연결하는 기능으로 라우팅을 수행하는 장비는 라우터 이다.

  • 라우팅 프로토콜: 라우터가 경로를 결정하는데 사용하는 규칙

  • 라우팅은 경로결정과 스위칭 기능으로 구성

  • 결정된 경로는 라우팅 테이블에 저장

  • 한 번 결정된 경로는 대부분 라우팅 프로토콜에 따라 결정한 경로가 유효한지 계속 확인

예)


5. IPv6

2^32개 주소를 가진 IPv4의 부족 문제로 2^128개 주소가 가능한 128비트 주소 체계

  • 특징
    헤더 구조 단순화 : 불필요한 필드를 제거하거나 변경하여 전송 효율 개선
    흐름 제어 기능 지원 : 멀티미디어 환경을 위한 스트림 전송 기능 추가

IPv4 vs. IPv6

  • IPv6 주소 예) (모두 같은 주소이다)
    2001:0DB8:0000:0000:0000:0000:1428:57AB
    2001:DB8:0:0:0:0:1428:57AB
    2001:DB8::1428:57AB

  • 모바일 IP. 단말기가 서브넷 지역을 이동해도 통신이 가능하다.
    HA로 도착한 패킷이 터널링 기법으로 FA를 통해 전달하며 작동한다

  • IPv6의 헤더 구조
    ![[Pasted image 20230405113452.png]]

  • IPv6의 헤더 항목
    ![[Pasted image 20230405113536.png]]

IPv6은 다음 세 가지 주소 유형을 지원합니다.

  • 유니캐스트
    유니캐스트 주소는 유니캐스트 주소 유형의 범위 내에 있는 하나의 인터페이스를 식별합니다. 적절한 유니캐스트 라우팅 토폴로지를 사용하면 유니캐스트 주소가 지정된 패킷이 하나의 인터페이스에 배달됩니다. 부하 분산 시스템을 수용하기 위해 RFC 3513에서는 호스트의 IPv6 구현에 하나의 인터페이스로 나타나기만 하면 여러 인터페이스가 동일한 주소를 사용할 수 있도록 허용합니다.
  • 멀티캐스트
    멀티캐스트 주소는 여러 개의 인터페이스를 식별합니다. 적절한 멀티캐스트 라우팅 토폴로지를 사용하면 멀티캐스트 주소가 지정된 패킷이 해당 주소로 식별된 모든 인터페이스에 배달됩니다. 멀티캐스트 주소는 여러 인터페이스에 배달되는 일대다 통신에 사용됩니다.
  • 애니캐스트
    애니캐스트 주소는 여러 개의 인터페이스를 식별합니다. 적절한 라우팅 토폴로지를 사용하면 애니캐스트 주소가 지정된 패킷이 해당 주소로 식별된 가장 가까운 하나의 인터페이스에 배달됩니다. 가장 가까운 인터페이스는 라우팅 거리를 기준으로 가장 가까이 있는 인터페이스로 정의됩니다. 애니캐스트 주소는 하나의 인터페이스에 배달되는 일대다중일 통신에 사용됩니다.

6. 모바일IP

이동중인 사용자가 언제, 어디서나 장소에 관계없이 통신이 가능한 네트워크에서 필요한 서비스를 제공받을 수 있는 환경을 지원 하는 것이다.

 즉, IP 주소를 가진 노드가 이동시에도 연결을 항상 보장하는데 필요한 기술이다.

  • HA (Home Agent)
    : HA (Home Agent)는 MN (Mobile Node)의 홈 주소(home address)와 같은 서브넷에 속한 라우터이며 이동 노드의 현재 위치를

 - FA (Foreign Agent)
: FA (Foreign Agent)는 MN이 현재 위치하고 있는 외부 서브넷에 존재하는 라우터로 MN에게 현재 위치를 나타내는 주소인 CoA

ICMP, IGMP

7. TCP

(Transmission Control Protocol) 

  • 서버와 클라이언트간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜이다.  

  • 데이터를 전송하기 전에 데이터 전송을 위한 연결을 만드는 연결지향 프로토콜이다.

  • 데이터는 네트워크선로를 통해 전달되는 과정에서 손실되거나 순서가 뒤바뀌어서 전달될 수 있는데, TCP는 손실을 검색해내서, 이를 교정하고 순서를 재조합할수 있도록 해준다.

1) 신뢰성 

  • TCP의 가장 중요한 특징은 신뢰할 수 있는 말단 장치간 데이터 전달이다. 신뢰성을 제공 하려면, TCP는 손상되거나 없어지거나 중복되거나 네트워크 계층에서 순서가 틀어져서 전달된 데이터를 복구해야 한다. TCP는 신뢰성을 실현하기 위해 적극적 수신, 통지, 재전송 체계를 사용한다. 

2) 흐름 제어 

  • TCP 데이터 세그먼트를 송수신하는 컴퓨터는 CPU와 네트워크 대역폭의 차이 때문에 서로 다른 데이터 속도로 작동할 수 있다. 결국 수신자가 처리할 수 있는 것처럼 훨씬 더 빠른 속도로 송신자가 데이터를 보낼 가능성이 많다. TCP는 송신자가 보낸 데이터의 양을 제어하는 흐름 제어 메커니즘을 구현한다. 

3) 다중화 

  • TCP에서는 한 라우터의 많은 프로세스가 TCP 통신 서비스를 동시에 사용할 수 있다. 

이것을 TCP 다중화라 한다. 이들 프로세스는 같은 네트워크 인터페이스에서 통신할 수 있으므로 네트워크 인터페이스의 IP 주소로 식별된다. 그러나 한 컴퓨터의 같은 네트워크 인터페이스를 사용하는 모든 프로세스는 공통의 IP 주소를 가지고 있으므로, 네트워크 인터페이스의 IP 주소외에도 더 많은 것이 필요하다. TCP는 TCP를 사용하는 응용프로그램에 포트 번호 값을 연계시킨다. 각 연결은 서로 다른 포트 쌍을 사용하므로, 이 연관성은 원격 컴퓨터의 응용 프로그램 프로세스들 사이에 여러 연결이 존재할 수 있게 한다. 응용 프로그램 프로세스에 대한 포트의 바인딩은 각 컴퓨터에서 독립적으로 처리된다. 

4) 연결형 서비스 

  • 응용 프로그램 프로세스는 TCP를 사용하여 데이터를 보낼 수 있는 상태가 되려면 먼저    연결을 설정해야 한다. 

5) TCP 연결은 데이터를 양방향으로 운반할 수 있다. 

  • 즉, 하나의 전송선로에서 데이터가 동시에 양쪽방향으로 전송될 수 있는 것을 의미한다. 

6) TCP 연결은 3way handshake 절차를 사용하여 열린다. 

   - SYN과 ACK 플래그는 다음과 같은 패킷을 나타내기 위해 사용된다.                          

         SYN = 1 및 ACK = 0 연결 열기 패킷 

         SYN = 1 및 ACK = 1 연결 열기 수신 통지 

         SYN = 0 및 ACK = 1 데이터 패킷 또는 ACK 패킷 

  - 연결을 설정하는 절차는 동기화(SYN) 제어 플래그를 이용하며, 3way handshake 라는 세 메시지를 교환하게 된다

프로토콜 헤더 (Protocol Header) 구조 

![[Pasted image 20230405114807.png]]

8. UDP

  • UDP(User Datagram Protocol)는 비연결형, 신뢰성이 없는 전송 프로토콜이다.
  • IP데이터그램을 캡슐화하여 보내는 방법과 연결 설정을 하지 않고 보내는 방법을 제공한다.
  • UDP는 TCP/IP 5계층에서 Transport Layer(전송계층)의 프로토콜이다.

UDP의 특징

  • UDP는 흐름제어, 오류제어 또는 손상된 세그먼트의 수신에 대한 재전송을 하지 않는다. 
  • 따라서 내용이 전송 중에 손실 될 수 있고, 전송되는 세그먼트의 순서가 바뀔 수 있다.
  • UDP는 TCP보다 간단하고 빠르다.
  • 작은 header size를 가지고 있다.
  • 흐름제어를 하지 않기 때문에 전송 속도를 최대한 빠르게 할 수 있다.
  • 수신자와 송신자 간의 handshaking이 없는 connectionless 성질을 가진다.

UDP를 사용하는 이유

UDP는 왜 사용할까? UDP는 TCP와 다르게 흐름제어나 오류제어 등이 없기 때문에 전송 속도를 최대한 빠르게 할 수 있다. 하지만 TCP처럼 신뢰성 있는 전송을 보장할 수 없다. 따라서 신뢰성보다 속도가 중요한 부문에서 UDP를 사용하게 된다. 예를 들어 유튜브 동영상 같은 스트리밍 어플리케이션은 신뢰성보다 속도가 중요하므로 UDP를 사용한다. 또한 DNS나 SNMP도 UDP를 사용한다.

![[Pasted image 20230405115045.png]]

profile
반갑습니다

0개의 댓글