네트워크 심화

hyena_lee·2023년 3월 6일
0

Network

목록 보기
1/1
post-thumbnail

🌎 네트워크 란?

  • Ner + work의 합성어로써 컴퓨터들의 통신 기술을 이용하여 그물망처럼 연결된 통신 이용형태를 의미한다.
  • 쉽게 말하자면, " 두 대 이상의 컴퓨터들을 연결하고 서로 통신 할 수 있는 것" 이 것이 바로 네트워크이다. (어떤 연결을 통해 컴퓨터의 자원을 공유하는 것)
  • IEEE(Institute of Electrical and Electronics Engineers:국제 전기 전자 공학회)에서는 다음과 같이 정의를 하였다. "몇 개의 독립적인 장치가

인증서를 주고 받을 때는 비대칭키를 쓰고 (시간이 오래 걸린다.)
데이터를 주고 받을 때는 대칭키를 쓴다.


🌖 회선교환 방식(Circuit Switching)

  • 회선교환 방식은 회선 독점을 통한 통신 방식이라고 볼 수 있다.
  • 실제로 는 대부분 전화망에서 사용하기 때문에 구성이 조금 다르다.
  • PC와 교환기로 이루어진 네트워크망이다.
  • 회선교환 방식의 가장 큰 특징은 [전용선 할당] 에 있다.

    예를 들어 전송할 데이터가 있다고 하면 위와 같이 전송을 위한 전용선을 할당하고 해당 선로를 모든 데이터를 전송하게 된다. 위 그림과 같이 송수신을 연결하는 전용선을 설정하고 전송을 하는게 핵심이다.

🌓회선교환의 특징

  • 회선교환의 통신 회선을 설정하여 데이터를 교환하는 방식
  • 회선 교환방식으로 음성 전화 시스템에 사용됨
  • 송신자의 모든 데이터는 동일한 경로로 전송됨
  • 안정적인 통신이 가능함
  • Point-To-Point 방식으로 연결됨
  • 통신중 중간경로에 문제가 발생할 경우 전체 연결이 끊어진다. (새로운 경로를 통한 새로운 회선할당 필요)

▶️장점

  • 대용량 + 고속 데이터 처리에 우수
  • 고정적인 대역폭을 사용
  • 연속적인 데티어 처리에 우수

▶️단점

  • 회선 이용 효율이 떨어짐 (대역폭 낭비)
  • 통신과정에서 회선문제시 회선할당부터 다시 해야함
  • 통신비용이 고가임

🌎패킷교환방식(Packet Switching)

  • 패킷교환을 회선교환과 다르게 [전용선] 개념이 없다.
  • 전송하려는 데이터를 패킷이라는 단위를 나눠서 네트워크망으로 뿌려준다.
  • 해당 데이터가 어떤 데이터의 몇번째 데이터인지의 정보와 최종 목적지에 대한 정보가 들어있다.
  • 위의 정보를 라우터가 보고 패킷을 최적경롤르 향해 전달하게 된다.
  • 최적경로는 단순하게 거리만을 계산하는 것.
  • 망의 혼잡도(대역폭 사용율), 연결상태, 기타 설정등에 따라 그때그때 변경될수 있기 때문에 수시로 변경될수 있다.
  • 딸서 특정한 데이터가 100개의 패킷으로 분해되어 전송한다면, 100개의 패킷들은 라우터에의해 서로다른 경로로 전송될 수 있고, 최종적으로 목적지에 100개의 패킷이 전달되면 패킷의 순서를 통해 다시 원래의 데이터로 합쳐지는 방식이다.

🌖패킷교환의 특징

  • 전송되는 패킷은 여러 경로를 이용가능 (패킷별로 최적의 경로 선택)
  • 송신 패킷ㅅ의 순서와, 수신 패킷의 순서가 다를 수 있음
  • 전송 속도 및 흐름 제어가 가능
  • 에러 탐지가 가능 (패킷정볼르 통해)
  • 일반적인 인터넷 망에서 사용됨

▶️장점

  • 회선의 이용률이 높음
  • 에러 및 장애에 강함 => 라우터 고장시 다른 경로를 즉각적으로 이용, 에러에 대해 특정 패킷만 재전송 가능
  • 인터네 뿐만 아니라 다양한 통신망에서 사용가능(전화도 가능)

▶️단점

  • 경로 탐색과정에서 지연이 발생됨
  • 전송량 증가에 따라 지연율이 급격하게 상승
  • 패킷헤더 추가로 인한 오버헤드 발생이 가능함
  • IP패킷에서 패킷은 pack과 bucket이 합쳐진 단어로 소포로 비유할 수 있다. IP 패킷은 이를 데이터 통신에 적용한 것으로 우체국 송장처럼 전송 데이터를 무사히 전송하기 위해 출발지 IP, 목적지 IP와 같은 정보가 포함되어 있다.

📍IP와 IP Packet - IP 한계

정확한 출발지와 목적지를 파악할 수 있다는 점에서 인터넷 프로토콜은 적절한 통신 방법으로 보이지만, IP에도 한계가 존재한다.

  • 비연결성
    -패킷을 받을 대상이 없거나 서비스 불능 상태여도 클라이언트는 서버의 상태를 파악할 방법이 없기 때문에 패킷을 그대로 전송한다.
  • 비신뢰성
    -중간에 서버가 데이터를 전달하던 중 장애가 생겨 패킷이 중간에 소실되더라도 클라이언트는 이를 파악할 방법이 없다.
    - 전달 데이터의 용량이 클 경우 이를 패킷 단위로 나눠 데이터를 전달하게 되는데 패킷들은 중간에 서로 다른 노드를 통해 전달될 수 있다. 이렇게 되면 클라이언트가 의도한 순서를 보장할 수 없게 된다.
    위에서 다룬 IP 패킷에 한계를 네트워크 계층 구조를 통해 보완할 수 있다.

🌎프로토콜

  • 규정이나 규약과 관련된 내용으로 네트워크상에서 통신할 때 규약에서 사용.
    (과거에는 어떤 회사냐, 어떤 표준이냐, 어떤 워킹그룹에냐에 따라 다른 특징의 다양한 프로토콜이 존재했는데 현재는 이더넷-TCP/IP 기반 프로토콜을 획일화 되고 있는 추세!)
  • 물리적 측면 : 데이터 전송 매체, 신호규약, 회선 규격등에서 이더넷이 많이 쓰임
  • 논리적 측면 : 장치들끼리 통신하기 위한 프로토콜 규격으로 TCP/IP가 많이 쓰임

🌖HTTP 프로토콜의 헤더 부분

🌖HTTP 프로토콜 - Request Header

: 문자기반이기에 비트기반 프로토콜에서 비교해서 효율성이나 속도 측면에서는 떨어지낟. 하지만 사람이 읽을 수 있는데ㅐ, 이는 즉 다양한 확장이 가능하다는 의미가 된다.

🌓 TCP/IP 프로토콜 스택

  • TCP/IP는 프로토콜 스택이라고 부름
  • TCP와 IP는 별도의 레이어 ( TCP는 트랜스포트 계층, IP는 네트워크 계층) 에서 동작하지만 함께 사용하고 있으며, 이런 프로토콜 묶음을 프로토콜 스택이라고 부름
  • TCP/IP 프로토콜 스액에는 실제로 TCP, IP뿐 아니라 다양한 애플리케이션 계층 프로토콜이다.
    => ex) UDP, ICMP, ARP, HTTP, SMTP, FTP
  • TCP/IP 프로토콜 스택은 다음과 같이 같은 구성으로 4개 부분으로 나뉜다.

▶️TCP 통신 과정


  • URG(긴급 데이터 표시) : 상위계층에서 긴급데이터임을 표시한 패킷으로 전송시 우선적으로 전송됨
  • ACK(응답확인) : 패킷을 정상적으로 수신했다는 것을 알리기 위한 패킷
  • PSH(즉시 확인 요청) : 해당 표시가된 패킷은 수신한 경우 버퍼가 차는 것을 기다리지 않고 즉시 상위 계층에 전달
  • RST(연결 초기화 요청): TCP 연결상 문제가 발생시 현재 연결을 끊고 다시 연결할 것을 요청함
  • SYN(회선 연결 요청): TCP 연결을 요청하는 패킷이며, 현재 자신의 준비상태를 상대방에게 전달
  • FIN(회선연결종료): 모든 데이터 전송시 완료되었음을 연결을 종료할 것을 알림.

🌎HTTP Connect- 연결과정

HTTP는 TCP 80번 포트를 이용한다 (HTTPS는 443번)

처음 3줄 보면 SYN, SYN ACK, ACK 가 전송되는 것을 볼 수있다.

▶️ 연결과정은 위와같이 3개 패턴의 핵심!!!

  • SYN (클라이언트 -> 서버) : 클라이언트가 서버에 TCP 연결을 요청한다. 이 때 자신의 연결준비 상태를 함께 전송.
  • SYN +ACK (서버 -> 클라이언트): 서버가 클라이언트의 연결 요청에 응답(ACK) 하며, 자신의 연결 준비 상태를 알린다. (SYN)
  • ACK( 클라이언트 -> 서버) : 클라이언트가 서버의 연결 준비 상태 (SYN) 를 포함한 패킷을 잘 수신했다고 알립니다 (ACK)

🌎HTTP Data Transmission - 데이터 통신

여기서 HTTP 프로토콜을 이용하셔 TCP 전송에 대해서 다루기 때문에 전송된느 데이터 [HTTP 프로토콜] 에서 사용하는 메서드와 해당 메서스에 대한 응답등이 해당된다.

3개의 패킷은 TCP Connect 이후 최초의 데이터 페캇이다.

  • HTTP(클라이언트 -> 서버) : 기본 url/ (최상위) 위치에 대한 html파일을 요청한다.
    즉, url 접속했을 때 최초로 보여줄 html 파일에 대한 정보를 서버에 요청하는 과정이다.
  • HTTP 200 OK (서버 -> 클라이언트) ㅣ: 200번 응답은 정상적으로 요청한 내용을 전송했다는 의미이며, 위에서 요청한 url에 접속시 html파일을 전송했다는 의미.
  • ACK(클라이언트 -> 서버) : 서버가 클라이언트에게 전송한 html파일을 정상적으로 수신했다는 ACK 응답이다.

🌎HTTP Disconnect - 연결 종료

  • FIN + ACK (클라이언트 -> 서버) : 이전애 서버로부터 받은 데이터를 잘 수신하였으며(ACK), 모든 데이터 전송이 끝났음으로 연결종료를 요청한다 (FIN)
  • FIN + ACK (서버 -> 클라이언트): 서버가 정상적으로 FIN 메시지를 수신하였으며 (ACK), 서버는 더 이상 처리할 데이터가 없음으로 즉시 FIN 메시지를 전송한다. (만약 통신할 데이터가 있을 경우 ACK 만 전송할 후 데이터 교환 후 FIN메시지를 보낸다.)
  • ACK(클라이언트 -> 서버): 서버의 FIN 메시지를 정상적으로 수신했음을 알린다.


🌖UDP란

  • UDP는 IP에 PORT, 체크섬 필드 정보만 추가된 단순한 비 연결지향형 프로토콜이다.
  • 신뢰성 있는 전송을 보장할 수는 없지만, 흐름제어나 오류제어 등이 없기 때문에 빠른 전송 속도를 보장한다.

▶️UDP 특징

  • 기능이 거의 없음
  • 비 연결지향 - handshakeking x
  • 데이터 전달 보증 x
  • 순서 보장 x
  • 빠른 전송 속도
  • 신뢰성 보다 연속성이 중요한 서비스 (ex, 유튜브 동영상 같은 스트리밍 어플리케이션)에 자주 사용 됨

🌎OSI 7계층과 TCP/IP 4계층

OSI 계층은 두 가지 계층으로 묶어서 나눌 수 있다

  • 1~4 계층 : 데이터 플로 계층 (Data Flow Layer) / 하위 계층 (Lower Layer)
  • 5~7 계층 : 애플리케이션 계층 (Application Layer) / 상위 계층 (Upper Layer)

위 표에서 상위 계층과 하위 계층을 나눈 분류는 각 계층의 역할과 목표에 따라 구분

  • 데이터 플로 계층 (하위 계층)
    : 애플리케이션 개발자가 해당 계층 프로토콜을 개발할 때 하위 계층을 고려하지 않고 데이터를 표현하는데 초점을 맞춘다.
  • 애플리케이션 계층 (상위 계층)
    : 데이터를 상대방에게 잘 전달하는 역할을 가지며 네트워크 엔지니어는 데이터를 전송하는데만 집중하지 애플리케이션의 데이터 표현은 고려하지 않는다.

이런 역할의 차이로 인해 애플리케이션 계층을 맡는 개발자와 데이터 플로 계층을 맡는 네트워크 엔지니어는 OSI 7계층을 각각 개발자의 하향식 (TOP-down), 네트워크 엔지니어는 상향식 (Buoom-up)형식으로 네트워크를 인식한다.

🌖상위 프로토콜 지시자


profile
실수를 두려워 말고 계속 도전 하는 개발자의 여정!

0개의 댓글