[network] 컴퓨터 네트워크

INDEX

컴퓨터 네트워크

네트워크 관련 기초 용어 정리

각각의 호스트들은 OSI 7 계층을 가지고 통신기능을 수행합니다.

  1. 물리계층(Physical layer)
    • 네트워크의 기본 네으퉈크 하드웨어 전송 기술으 이룬다.
    • 네트워크의 높은 수준기능의 논리데이터 구조를 기초로 하는 필수 계층
  2. 데이터 링크계층(Data Link layer)
    • Point to Point 간 신뢰성있는 전송을 보장하기 위한 계층으로 CRC기반의 오류제어와 흐름 제어가 필요하다.
    • 주소 값은 물리적으로 할당 받는데, 이는 네트워크 카드가 만들어질 때부터 맥 주소(MAC address)가 정해져 있다는 뜻이다.
    • 데이터 링크 계층의 가장 잘 알려진 예는 이더넷이다.
  3. 네트워크 계층(Network layer)
    • 여러개의 노드를 거칠 때마다 경로를 찾아주는 역할을 하는 계층으로 다양한 길이의 데이터를 네트워크를 통해 전달 하고 그 과정에서 전송계층이 요구하는 서비스품질(QoS)를 제공하기 위한 기능적,절차적 수단을 제공한다.
    • 네트워크 계층은 라우팅,흐름제어,세그멘테이션,오류제어,인터네트워킹 등을 수행한다.
  4. 전송 계층(Transport layer)
    • 양 끝단의 사용자들이 신뢰성있는 데이터를 주고받을 수 있또록 해 주어, 상위 계층들이 데이터 전달의 유효성이나 효율성을 생각하지 않도록 해준다.
    • 시퀀스 넘버 기반의 오류제어 방식을 사용한다.
    • 전송 계층은 특정 연결의 유효성을 제어하고, 일부 프로토콜은 상태개념이 있고(stateful), 연결 기반 이다.
    • 가장 잘 알려진 전송계층의 예는 TCP
  5. 세션 계층(Session layer)
    • 양 끝단의 응용 프로세스가 통신을 관리하기 위한 방법을 제공한다.
    • 동시 송수신 방식,반 이중 방식,전이중 방식의 통신과 함께,체크 포인팅과 유휴,종료,다시 시작 과정 등을 수행한다.
    • 이 계층은 TCP/IP 세션을 만들고 없애는 책임을 진다.
  6. 표현 계층(Presentation layer)
    • 코드간의 번역을 담당하여 사용자 시스템에서 데이터의 형식상 차이를 다루는 부담을 응용 계층으로 부터 덜어준다.
    • MIME 인코딩이나 암호화 등의 동작이 이 계층에서 이루어진다.
  7. 응용 계층(Application layer)
    • 응용 프로세스와 직접 관계하여 일반적인 응용 서비스를 수행한다.
    • 일반 응용 서비스는 관련된 응용 프로세스들 사이의 전환을 제공한다.

네트워크 주소의 표현

시스템 사이에 데이터를 주고받기 위해서는 시스템 각각의 고유한 값을 가지고 있어야한다. 그래야 정확하게 원하는 목적지에 데이터를 줄 수 있기 때문이다.이러한 고유의 구분자를 숫자로 된 주소로 표현한다.

DNS(Domain Name System)

— TCP / IP 모델 —

인터넷은 데이터 중개 기능을 담당하는 네트워크 계층으로 IP 프로토콜을 사용하는 네트워크이다. 따라서 인터넷에 연결하고자 하는 호스트는 반드시 IP 프로토콜을 지원해야하며, 전송 계층은 TCP 나 UDP를 사용한다.

컴퓨터 네트워크 구현 모델은 사용자 공간과 시스템 공간으로 이루어진다. 앞선 장에서 말했듯이 전송 계층 까지의 4계층은 시스템 공간인 운영체제 내부에 구현된다. TCP/IP 와 하위 계층의 기능을 담당하는 LAN카드 드라이버 루틴은 운영체제 영역에 속한다. 사용자 공간에는 다양한 프로세스가 존재가능


교환 시스템


LAN,MAN,WAN

호스트 사이의 연결 거리를 기준으로 lan,man,wan을 구분한다.

인터네트워킹

인터네트워킹은 둘 이상의 서로 다른 네트워크를 연결하는 기능이다. 지금까지는 한 네트워크 안에서의 데이터 교환을 보았다면 지금부터는 네트워크 간의 교환 기능을 말한다. 이러한 교환은 라우팅 장비가 수행한다. 인터네트워킹 기능을 수행하는 시스템을 일반적으로 게이트웨이라고 한다. 게이트웨이는 앞서 말한 중개노드와 같은 역할을 한다고 할 수 있다. 게이트웨이는 기능에 따라 리피터, 브리지, 라우터로 구분된다.


오류 제어 및 흐름 제어

오류제어

흐름 제어

오류제어와 함께 데이터 링크 계층해서 제공 데이터 프레임의 전송 속도를 조절하는 역할을 한다.송신 호스트는 수신 호스트가 감당할 수 있을 정도의 전송 속도를 유지하면서 전송을 한다. 수신 호스트는 바로 처리가 어려운 경우 버퍼를 이용하여 데이터를 저장한다. 하지만 저장할 공간이 없을 경우 데이터 손실이 발생할 수 있다. 따라서 흐름 제어에 의해 다음에 수신할 프레임의 전송 시점을 송신 호스트에게 통지하는 방식을 취한다. 또 응답을 받지 않고도 전송할 수 있는 데이터의 양도 송신 호스트에게 통지한다.


프레임 및 다항 코드

데이터 링크 계층에서는 전송 데이터를 프레임이라는 작은 단위로 나누어 처리.

전송 프레임에서는 상위 계층에서 보낸 전송 데이터의 오류를 확인하기 위한 체크섬,송수신 호스트의 주소,기타프로토콜에서 사용하는 제어코드 같은 정보가 포함된다. 프레임은 내부 정보를 표현하는 방식에 따라 문자 프레임과 비트 프레임으로 나누어진다.

문자 프레임

비트 프레임

프레임 전송 과정에서 발생하는 오류를 극복하는 방법은 크게 두 가지이다. 오류 검출 코드를 넣어 수신 호스트가 오류 검출 후 재전송을 복구하는 방법과 오류 복구 코드를 넣어 수신 호스트가 오류 검출과 복구를 동시에 수행하는 방법이다. 여기에서는 오류 검출에 대해 알아볼 것이다. 오류 검출을 하는 방법에는 3가지가 있다. 패리티 비트, 블록 검사, 다항코드로 오류 검출을 수행할 수 있다.

패리티 비트

블록 검사

다항 코드


데이터 링크 계층 프로토콜의 기초

데이터 링크 계층에서 사용하는 데이터의 단위는 프레임 이다 . 프레임에는 3가지 종류가 존재한다.

  1. 정보 프레임
  2. 긍정 응답 프레임
  3. 부정 응답 프레임

정보프레임은 상위 계층이 전송 요구한 데이터를 송신하는 용도로 사용된다. 순서번호,송수신 호스트 정보 등이 포함 되어 있다.

긍정 응답 프레임(ACK 프레임 : Positive Acknowledgement)은 전송 데이터가 올바르게 도착했음을 회신하는 용도로 사용된다. 수신자 측이 송신자 호스트에게 전송하는 프레임.

부정 응답 프레임(NAK 프레임: Negative Acknowledgment)은 전송 데이터가 깨져서 도착했음을 알리는 회신하는 용도로 사용된다.데이터를 수신한 호스트가 데이터를 송신한 호스트에게 정손. 송신자 측은 다시 원래의 데이터를 재전송하여 오류를 복구시킨다.

긍정,부정 프레임 모두 순서번호를 포함하고 있음.


네트워크 계층의 기능

네트워크 계층의 기본 기능은 라우팅이다. 라우팅은 송수신 호스트 사이의 패킷 전달 경로를 선택하는 역할을 한다. 라우팅을 위해서 라우팅 테이블을 가지고 있는데 네트워크 구성 형태

네틍 ㅓ크 계층에서 제공하는 서비스는 연결형 서비스와 비연결형 서비스로 나뉜다.

라우팅은 패킷의 전송 경로를 지정하는 행위. 따라서 공평원칙과 효율원칙을 만족 시켜야한다.

라우팅은 정적 라우팅과 동적라우팅으로 나누어 질 수 있다.

라우팅에서 쓰는 패킷으로 HELLO 패킷, ECHO 패킷 존재.

라우팅 테이블 : 라우터가 패킷의 적절한 경로를 찾기 위한 가장 기본적인 도구. 목적지 호스트와 다음 홉에 대한 정보 보유 (목적지 호스트 : 패킷의 최종 목적지 호스트,다음 홉 : 목적지 호스트 까지 패킷을 전달하기 위한 인접 경로)

라우팅을 처리하는 여러가지 방법이 존재.

  1. 소스 라우팅 : 송신 호스트가 패킷의 전달 경로를 결정. 전송 경로는 패킷 내부에 기록
  2. 분산 라우팅 : 라우팅 정보를 분산하여 관리. 호스트의 개수가 많을 수록 효과적
  3. 중앙 라우팅 : 특정 호스트가 모든 라우팅 정보를 관리
  4. 계층 라우팅 : 분산 라우팅 + 중앙 라루팅 , 특정 부분들을 나누어 처리. 규모가 커질수록 효과적

혼잡제어 vs 흐름제어

흐름제어 : 송수신 호스트 사이의 전송 속도 문제를 처리, 끝과 끝 호스트 사이의 문제

혼잡제어 : 네트워크에서의 전송 능력 문제를 해결,호스트와 호스트 사이의 모든 망안에서의 문제

혼잡 제어에서 트레픽 성형이라는 것이 있는데 패킷 발생 정도를 네트워크에서 예측 가능한 정도로 조절하는 것을 의미한다. 혼잡의 발생은 트레픽이 특정 시간에 집중되는 버스트 현상으로 발생을 하는 경우가 많으므로 이를 조절하는 것이 필요하다. 이러한 트레픽 성형을 해주는 알고리즘이 바로 리키 버킷 알고리즘이다. 깔대기라는 버퍼를 사용하여 송신 호스트에서 나오는 데이터의 가변율을 고정율로 협상하여 일정한 전송률을 가지게 만들어 트레픽을 줄이는 알고리즘이다.

혼잡 제거는 특정 지역의 혼잡이 다른 지역으로 확대되지 않도록 하는 작용이다. 혼잡 제거를 위한 방식으로 자원 예약 방식과 ECN 패킷 방식이 존재한다. 자원 예약 방식은 호스트와 서브넷이 미리 네트워크 자원의 사용 정도를 협상하여 사전 예약하는 것을 의미한다. 하지만 이런 점은 자원이 낭비가 될 가능성이 존재한다. ECN 패킷 방식은 출력 경로를 사용하는 빈도를 모니터하여 한계치가 넘어가면 송신 호스트에게 주의 표시를 보내준다. ECN 패킷을 받은 호스트는 ECN 패킷이 더 이상 오지 않을 때까지 송신 패킷 양을 줄인다.


라우팅 프로토콜


### IP 프로토콜

ip 프로토콜은 인터넷 환경에서 네트워크 계층의 데이터 전송 프로토콜이다.

IP Frame

특정 네트워크를 관리하는 네트워크 관리자는 개별 호스트들에게 수동으로 고정 IP 주소를 할당할 수 있다. 하지만 많은 IP 주소가 필요하게 되면 DHCP를 사용하여 자동 할당을 하는 방법을 사용할 수 있다. DHCP 방식은 시간 분할 방식으로 IP 주소를 부여한다. IP주소를 관리하는 풀을 가지고 IP 요청이 들어오게 되면 풀에서 하나의 IP 주소를 할당하고 사용이 끝나면 다시 IP 주소 풀로 반환되어 다른 호스트가 사용할 수 있게 한다. 이렇게 사용하면 더 적은 IP 주소를 가지고도 시간 분할로 활용을 할 수 있다는 장점이 있다.


### IP v6 프로토콜

IPv4 프로토콜은 32비트의 주소 공간을 지원하는 프로토콜로 이론상 최대 2의 32승 개의 호스트를 사용할 수 있다. 하지만 인터넷이 급성장함에 따라 이 정도의 주소 크기만으로 엄청나게 많은 호스트를 수용하는 것에는 한계가 생겼다. 따라서 이를 대체하기 위해 호스트의 주소 공간을 대폭 확장한 IPv6 프로토콜이 차세대 프로토콜로 사용되고 있다.

IP v6 변경점

IP v6의 헤더


### 전송 계층

전송 계층은 네트워크 양 끝단에서 통신을 수행하는 당사자 간의 다대단 연결을 제공

오류제어,흐름제어,데티어 순서화 기능을 제공하는 면에서 데이터링크 계층과 유사함

but 데이터 링크 계층은 물리적으로 1:1 연결된 호스트 사이의 전송을 의미한다.

전송계층은 논리적으로 1:1 연결된 호스트 사이의 전송을 의미


TCP와 UDP

TCP의 3 way handshake와 4 way handshake


소켓의 주소 체계와 서비스


HTTP와 HTTPS


쿠키와 세션

세션도 쿠키를 사용하여 값을 주고받으며 클라이언트의 상태 정보를 유지한다. 즉, 상태 정보를 유지하는 수단은 쿠키 이다.

SSL(TLS)