네트워크의 규칙

김민호·2021년 12월 16일
0

WECODE TIL

목록 보기
24/24

1. 프로토콜

  • 원래 외교상의 언어로써 의례나 국가간에 약속을 의미
  • 컴퓨터나 네트워크 장비가 서로 통신하기 위해 미리 정해 놓은 약속, 규약
  • 공통의 데이터 교환 방법 및 순서에 대해 정의한 의사소통 약속 또는 규약
  • 가장 주요한 프로토콜이 통신 프로토콜 : 네트워크상 통신회선을 통해서 컴퓨터, 단말기와 같은 시스템간에 내부적으로 통신, 접속하기 위하여 정보, 자료 등을 주고 받는 프로토콜
  • 가장 널리 사용되는 통신 프로토콜이 TCP/IP

2. OSI 모델

  • ISO(International Organization for Standardization, 국제표준화기구)에서 개발할 모델
  • 네트워크 프로토콜 디자인과 통신을 계층으로 나눠서 설명한 것
  • 네트워크 통신이 일어나는 과정을 7단계로 나누어 놓은 것

1) OSI 모델의 7계층

  • OSI 7계층 : 응용계층, 표현계층, 세션계층, 전송계층, 네트워크 계층, 데이터 링크 계층, 물리계층
  • 계층을 나눈 이유는?
    -> 각 계층을 나눠서 만약 어떤 한 계층에서 문제가 생긴다면 다른 계층은 건드리지 않고 한 계층만 수정하여 해결할 수 있음. 유지보수가 용이하다.
  • OSI 7계층은 상하구조를 가진다
    -> 계층이라는 표현을 쓴 것은 상위 계층의 프로토콜이 정상적으로 동작하기 위해서는 그 하위계층들이 모두 정상적으로 동작해야하기 때문
    -> ex) 5계층이 정상적으로 동작하기 위해서는 1,2,3,4 계층이 모두 정상적으로 동작하고 있어야 함

2) OSI 모델 각 계층의 역할

1. 물리계층(Physical Layer)

  • 7계층 중 최하위 계층.
  • 주로 전기적, 기계적, 기능적인 특성을 이용해 데이터를 전송.
  • 데이터는 0과 1의 비트열, 즉 On, Off의 전기적 신호 상태로 이루어져 해당 계층은 단지 데이터를 전달.
  • 데이터 전달의 역할만을 할 뿐이라 알고리즘, 오류 제어 기능이 없음.
  • 장비로는 케이블, 리피터, 허브가 있음
  • 물리적인 연결을 통하여 인접한 두 장치 간의 신뢰성 있는 정보 전송을 담당(Point-To-Point 전송)
  • 오류나 재전송하는 기능이 존재
  • MAC 주소를 통해서 통신
  • 데이터링크 계층에서 데이터 단위는 프레임(Frame)
  • 장비로는 브리지, 스위치가 있음

3. 네트워크 계층(Network Layer)

  • 중계 노드를 통하여 전송하는 경우 어떻게 중계할 것인가를 규정
  • 라우팅 기능을 맡고 있는 계층으로 목적지까지 가장 안전하고 빠르게 데이터를 보내는 기능을 가지고 있음 (최적의 경로를 설정 가능)
  • 컴퓨터에게 데이터를 전송할 주소를 갖고 있어서 통신가능(우리가 자주 듣는 IP 주소가 바로 네트워크 계층 헤더에 속함)
  • 네트워크 계층에서 데이터 단위는 패킷(Packet)
  • 장비로는 라우터, L3 스위치가 있음

4. 전송 계층(Transport Layer)

  • 종단 간 신뢰성 있고 정확한 데이터 전송을 담당
  • 송신자와 수신자 간의 신뢰성있고 효율적인 데이터를 전송하기 위하여 오류검출 및 복구, 흐름제어와 중복검사 등을 수행
  • 데이터 전송을 위해서 Port 번호를 사용함.(대표적인 프로토콜로 TCP와 UDP가 있음)
  • 전송 계층에서 데이터 단위는 세그먼트(Segment)

5. 세션 계층(Session Layer)

  • 통신 장치 간 상호작용 및 동기화를 제공
  • 연결 세션에서 데이터 교환과 에러 발생 시의 복구를 관리

6. 표현 계층(Presentation Layer)

  • 데이터를 어떻게 표현할지 정하는 역할을 하는 계층
  • 표현 계층은 세가지의 기능을 갖고 있습니다.
    1. 송신자에서 온 데이터를 해석하기 위한 응용계층 데이터 부호화, 변화
    2. 수신자에서 데이터의 압축을 풀수 있는 방식으로 된 데이터 압축
    3. 데이터의 암호화와 복호화
      (MIME 인코딩이나 암호화 등의 동작이 표현계층에서 이루어짐. EBCDIC로 인코딩된 파일을 ASCII 로 인코딩된 파일로 바꿔주는 것이 한가지 예임)

7. 응용 계층(Application Layer)

  • 사용자와 가장 밀접한 계층으로 인터페이스 역할
  • 응용 프로세스 간의 정보 교환을 담당
  • ex) 전자메일, 인터넷, 동영상 플레이어 등

  • 데이터를 전송하는 쪽(송신 측)은 데이터를 보내기 위해 상위 계층에서 하위 계층으로 데이터 전달
  • 각 계층은 독립적이므로 데이터가 전달되는 동안 다른 계층의 영향을 받지 않음

3. TCP/IP

1) TCP란?

  • Transmission Control Protocol
  • 서버와 클라이언트간에 데이터를 신뢰성 있게 전달하기 위해 만들어진 프로토콜
  • TCP는 네트워크 계층 중 전송 계층에서 사용하는 프로토콜 로서, 장치들 사이에 논리적인 접속을 성립(Establish) 하기 위하여 연결을 설정하여 신뢰성을 보장하는 연결형 서비스
  • 데이터는 네트워크선로를 통해 전달되는 과정에서 손실되거나 순서가 뒤바뀌어서 전달될 수 있는데, TCP는 손실을 검색해내서, 이를 교정하고 순서를 재조합할수 있도록 해준다

2) TCP/IP 모델 4계층

  • 응용계층, 전송계층, 인터넷계층, 네트워크 접속 계층

3) TCP 의 연결(connect)과정, 연결해제과정(disconnect)

연결(connect)과정 : 3-way HandkShake


연결 요청단계(1단계)
클라이언트 측 TCP는 서버 TCP에게 특별한 TCP 세그먼트를 송신해요. 이 특별한 세그먼트는 애플리케이션 계층 데이터를 포함하지 않아요. 세그먼트 헤더에 SYN 비트라고 불리는 하나의 플래그 비트를 가져요. 이러한 특별한 세그먼트를 SYN 세그먼트라 불러요.추가로 클라이언트는 최초의 순서번호(client_isn)을 선택하고, 최초의 TCP SYN 세그먼트의 순서번호 필드에 이 번호를 넣어요. 이 세그먼트는 IP 데이터그램 안에서 캡슐화되고 서버로 송신돼요.(그림확인)

연경 승인단계(2단계)
1단계에서 보낸 데이터그램이 서버 호스트에 도착했을 때, 서버는 데이터 그램에서 TCP SYN 세그먼트를 뽑아내요. 그리고 연결에 TCP 버퍼와 변수들을 할당해요. 또한 클라이언트 TCP로 연결 승인 세그먼트를 송신해요(그림확인).이 연결 승인 세그먼트도 애플리케이션 데이터를 포함하지 않아요. 그러나 세그먼트 헤더 안에 3개의 중요한 정보를 포함해요. 1. SYN비트는 1로 설정돼요. 2. TCP 세그먼트 헤더의 확인응답 필드는 client_isn+1로 설정돼요. 3. 자신의 최초의 순서번호(server_isn)을 선택하고, TCP 세그먼트 헤더의 순서번호 필드에 이 값을 넣어요.이 과정은 "나는 당신의 최초 순서번호(client_isn)를 가지고 연결을 시작하기 위해서 당신의 SYN 패킷을 수신했다. 이 연결설정에 동의하고, 나의 최초 순서번호는 server_isn이다"라고 말하는 것과 같아요.연결 승인 세그먼트는 SYN-ACK 세그먼트라 불려요.

ACK 단계(3단계)
SYNACK를 수신한 클라이언트는 연결에 버퍼와 변수들을 할당해요. 그 다음에 클라이언트 호스트는 서버로 또 다른 세그먼트를 송신해요(그림확인).이 마지막 세그먼트가 서버의 연결 승인 세그먼트를 확인해요(클라이언트는 TCP 세그먼트 헤더의 확인응답 필드안에 server_isn+1 값을 넣는 것으로 그 일을 해요). 연결이 설정되었기 때문에 SYN 비트는 0으로 설정돼요. 3 way 핸드셰이크의 세 번째 단계는 클라이언트에서 서버로 세그먼트 페이로드에 데이터를 보낼 수 있어요.

연결해제과정(disconnect) : 4-way HandkShake


1. App으로부터 close 신호를 받은 Client가 Server에게 연결을 종료하겠다는 FIN 플래그를 전송하게된다.
2. Server는 FIN 플래그를 받고 응답을 받았다는 의미로 ACK를 보낸다.그리고 Server는 자신이 하던 데이터 통신이 끝날 때 까지 기다린다.(이 상태가 Time_Wait 상태)
3. Server가 통신이 끝났으면 연결이 종료되었다고 해당 Client한테 FIN 플래그를 전송한다.
4. Client는 응답을 받았다는 의미로 ACK를 보낸다.이 때 Client는 패킷 유실이나 Routing 지연으로 인해 FIN패킷보다 늦게 도착하는 상황을 방지하기 위해 FIN 플래그를 받게되어도 일정시간동안 세션을 남겨두고 잉여 패킷을 기다린다.(이 때도, TIME_WAIT 상태)

출처 : https://livenow14.tistory.com/57

4) IP란?

  • Internet Protocol
  • 통신을 하기 위해 인터넷에 연결되어 있는 모든 장치들(컴퓨터, 서버 장비, 스마트폰 등)을 식별할 수 있도록 각각의 장비에게 부여되는 고유 주소
  • IP는 TCP와는 달리 데이터의 재조합이나 손실여부 확인이 불가능하며, 단지 데이터를 전달하는 역할만을 담당
  • 참고로 IP주소는 하드웨어 고유의 식별번호인 MAC주소와 다르게 임시적으로 다른 주체(통신사)에게 받는 주소이므로, 바뀔수 있다.
  • IP는 4개의 숫자로 구성되며 숫자의 크기에 따라 IPv4(32비트, 각 숫자는 1바이트), IPv6(128비트, 각 숫자는 4바이트)로 나뉜다.
  • 일반적으로 IPv4는 10진수로 표현하며 각 자리는 .으로 구분하고, IPv6는 각 자리를 4자리 16진수로 표현하며 각 자리는 :로 구분
    ex) IPv4 → 192.168.1.2
    IPv6 → 2001:0000:0000:3f5c

4. 캡슐화와 역캡슐화

  • 캡슐화 :
    - 필요한 데이터를 추가해나가는 것(=헤더를 붙여나가는 것)
    • 데이터를 보내기 위해선 데이터의 앞부분에 전송하는데 필요한 정보를 붙여서 다음 계층으로 보내기 때문
      - 캡슐화는 컴퓨터 통신에서 상위 계층의 통신 프로토콜을 데이터에 추가하여 하위 계층으로 전송하는 기술
  • 역캡슐화
    - 데이터를 받는 쪽에서 헤더를 하나씩 제거하는 것
    - 데이터 송신 측에서 캡슐화를 통해 데이터를 전송하다면 수신측에서는 역캡슐화를 통해 최초로 보낸 데이터 형태로 받을 수 있는 것
    - 캡슐화와 반대로 데이터 링크 계층부터 순서대로 상위 계층으로 전달
  • 헤더
    - 보낼 데이터 + 데이터를 전달받은 상대방 정보
    - 저장되거나 전송되는 데이터의 맨 앞에 위치하는 추가적인 정보 데이터.
    - 데이터의 내용이나 성격을 식별 또는 제어하는 데 사용
  • 트레일러 : 데이터를 전달할 때 데이터의 마지막에 추가되는 정보

5. VPN

  • Virtual Private Network(가상 사설망)
  • 가상 통신 터널을 만들어 기업 본사나 지사와 같은 거점 간을 연결하여 통신하거나 외부에서 인터넷으로 사내에 접속하는 것
  • VPN은 다음 두 종류로 구성

1) 인터넷 VPN

  • 거점 간 접속 : IPsec 이라는 암호 기술 프로토콜을 사용하여 접속
  • 원격 접속 연결 : 외부에서 사용하는 컴퓨터와 사내 네트워크를 연결하기 떄문에 암호화된 통신로를 만듦

2) IP-VPN

  • MPLS라는 기술을 사용하며 인터넷망이 아닌 통신 사업자 전용 폐쇄망을 사용
  • MPLS는 폐쇄망을 사용하기 때문에 제 3자에 의한 해킹이나 데이터의 변조 위험이 없어서 암호화 기능이 필요하지 않음
profile
개발자로서의 삶은 https://velog.io/@maxminos 에서 기록하고 있습니다 😀

0개의 댓글