지식 창고/CS 전공 지식

📍네트워크 정리 중인데 재료는 인터넷에서 쥽쥽띠

감귤밭호지차 2022. 12. 24. 13:53

📍네트워크

 

CS 전공은 정리하면 할 수록 토나올 것 같음... 하긴 이공계 전공을 미쳤다고 6개월만에 독파하겠다고 마음 먹은 내가 미친 거지만,, 어떻게 하나.. 해야지... ㅠㅠ 하루 10시간 돌리면 그래도 CS 전공 아는 척은 할 수 있지 않을까요...?🤣

 


#모두의 네트워크

네트워크 : 두 대 이상의 컴퓨터가 연결 되어 있는 구조 -  데이터(파일)을 보낼 수 있음. 

인터넷 : 전 세계의 큰 네트워크부터 작은 네트워크까지 연결하는 거대한 네트워크를 의미

패킷(packet) : 네트워크를 통해 전송되는 데이터의 작은 조각 ( 일종의 데이터를 전달하는 택배 ) 

 - 큰 데이터를 통째로 보내게 되면 큰 데이터가 네트워크의 대역폭을 너무 많이 차지(점유)해서 다른 패킷의 흐름을 막을 위험이 있으므로 패킷 단위로 전송. ( 네트워크는 일종의 도로로 대형 트럭들이 도로를 점령하면 길이 막히는 현상에 비유할 수 있음 ) 

 - 패킷 전송 시 순서대로 번호를 부여해서 보내기 때문에 도착지에서도 순서에 맞춰서 데이터를 알맞게 수신할 수 있음. ( 정보 오류 ↓ ) 

 

🍋🍋🍋🍋🍋🍋

 

PS. 네트워크에 데이터를 전송하는 경우에는 비트 정보를 전기 신호로 변환해서 전송하기 때문에 실제로는 네트워크에 ' 전기 신호'가 전송되고 있음 (Lesson 9추가필요)

 

네트워크의 범위  : LAN과 WAN의 차이

#LAN (Local Area Network)

건물 안이나 특정 지역을 범위로 하는 네트워크  

 

LAN은 건물 안이나 가정에서 LAN 케이블로 연결해서 사용하기 때문에 신호가 약해지거나 오류가 발생할 확률이 매우 낮습니다. ( 연결 거리가 짧기 때문이죠! ) 거리도 짧기 때문에 WAN보다는 속도가 빠릅니다. 

 

#WAN (World Area Network)

지리적으로 넓은 범위에 구축된 네트워크

ISP( Internet Service Provider ) 인터넷 서비스 제공자 가 제공하는 서비스를 사용하여 구축된 네트워크로 LAN과 LAN을 연결한 형태라고 생각해도 됨.지리적으로 멀리 떨어져있는 두 사무실의 네트워크를 서로 연결할 때  ISP 서비스를 사용하여 네트워크를 구축할 수 있음.

*ISP에는 KT, U+, SK 브로드밴드 등과 같은 통신회사들이 있음.

 

WAN은 멀리 떨어져있기 때문에 (케이블로 연결 할 수가 없어요!) 신호가 약해지거나 오류가 발생할 확률이 더 높아집니다. 속도도 거리가 먼 만큼 WAN보다는 느립니다. 

 

가정에서 LAN 구성 

인터넷을 사용하기 위해 ISP를 결정하고 인터넷 회선(광랜)을 결정합니다.? 또한 추가로 인터넷 공유기라는 장비가 필요합니다. 인터넷 공유기 ( broadband router )라고 불리우며 가정이나 소규모 기업에서 인터넷에 접속할 때 쓰입니다. 최근에는 라우터의 기능 뿐만 아니라 허브, 스위칭 허브, 방화벽과 같은 다양한 기능도 제공합니다. 

 

회사에서 LAN 구성

소규모 회사(소호회사)에서의 네트워크 구성은 우선 DMZ라는 네트워크 영역이 있다는 특이점이 있습니다. 

 

* DeMilitarized Zone : 네트워크 구성 중에서 일반적으로 인터넷인 외부 네트워크와 내부 네트워크 사이에 위치한 중간 지대(서브넷)을 의미. 네트워크의 보안 영역으로 외부 공격자가 내부 네트워크에 침투하는 것을 막는 역할을 함.

 

DMZ는 외부에 공개하기 위한 네트워크로 주로 웹 서버, 메일 서버, DNS 서버를 공개합니다. 외부에 공개해도 되는 자료들과 내부에서만 관리해야 하는 자료들이 있기 때문에 이렇게 나눠서 관리하는 듯 합니다. 회사가 커지고 직원 수가 많아질 수록 스위치와 같은 장비가 늘고 랜 케이블의 배선도 늘어날 것 입니다. 

 

회사에서는 서버를 운영하기 위해 서버를 사내에 설치(서버 장비실 관리)하거나 데이터 센터(온프레미스 : on-premise)에 두거나 클라우드에 둘 수 있습니다. 

 

* 랙(Rack)은 PC나 서버, 통신장비, 각종 계측기 등 일정 시스템을 구성하는 장비들을 보관하고 시스템 구성에 필요한 환경을 만들어 주는 제품. 

 

랙 안에는 랙에 설치하기 적합한 형태와 크기를 가진 서버와 라우터와 스위치를 설치할 수 있는데 라우터는 무선 랜 긴으이 있는 라우터를 사용하는 경우가 많음. 

 

네트워크 프로토콜

네트워크에서 공통으로 사용할 수 있는 표준 규격 - 프로토콜 

 

OSI모델

ISO(국제표준화기구)에서 지정한 표준 규격으로, OSI 모델은 네트워크 기술의 기본이 되는 모델입니다. 

7 계층(레이어)으로 나뉘며 통신할 때, 맨 위의 응용 꼐층에서 순차적으로 아래 계층으로 전달 됩니다. 

  

 

TCP/IP모델

ㅇㄹ


#Git-유명한 질문List

HTTP 의 GET 방식과 POST 방식 

두 방식은 HTTP 프로토콜을 이용해서 서버에 무엇인가를 요청 할 때 사용하는 방식입니다. 

내가 java spring 할 때 GET방식 POST 방식 선택해서 보내는데 GET은 URL에 정보가 뜨고 POST는 따로 PHP이런데다가 DB에 저장해버리는 거 

 

# GET 방식

요청하는 데이터가 HTTP Request Message의 Header부분에 url이 담겨서 전송되는 방식입니다. 

url에 데이터가 담겨 전송되기 때문에 가능한 데이터의 크기가 제한적이며, 보안이 필요한 데이터에 대해서는 GET 방식은 적절하지 않습니다. 

 

GET = 가져오다  : 이 처럼 GET 방식은 서버에서 어떤 데이터를 가져와서 보여주는 용도로 서버의 값이나 상태 등을 변경하지 않습니다. Select (선택) 적인 성향을 가지고 있다고 볼 수 있는 것입니다. 

 

GET 방식의 요청은 브라우저에서 Caching (캐싱)할 수 있습니다. 그래서 POST방식을 사용해야 하지만 데이터의 크기가 작고 보안적 문제가 없다는 이유로 GET 방식을 사용한다면 기존에 caching되었던 데이터가 응답될 가능성이 존재하므로 각각이 목적에 맞는 기술을 사용해야 하니 주의해야 합니다. 

* Cashing(캐싱) :

[ 웹 사이트와 애플리케이션의 성능은 이전에 가져온 resource들을 재사용함으로써 현저히 향상 될 수 있습니다.]

HTTP 캐싱은 레이턴시와 네트워크 트래픽을 줄여줌으로써 resource를 보여주는 데 필요한 시간을 줄여줍니다. HTTP캐싱을 활용하여 웹 사이트가 좀 더 빠르게 반응하도록 만들 수 있습니다. #MDN

 

브라우저 캐시는 브라우저에서 로컬 웹 페이지 리소스를 저장하는데 사용되는 매커니즘으로 성능을 향상시키고 대역폭 소비를 최소화하여 개선된 환경을 만들 수 있습니다. 캐시는 빠른 접근을 위해 값을 임시로 저장하는데 사용되는 방식으로 브라우저 캐시는 CSS, JS, 이미지, 비디오 등의 정적 리소스를 포함하는 작은 데이터베이스입니다.  # 티스토리

 

# POST 방식

POST 방식의 request는 HTTP REquest Message의 Body 부분에 데이터가 담겨서 전송이 됩니다. 

GET방식보다 전송 할 수 있는 데이터의 크기가 크며 보안면에서 낫습니다. 물론 암호화하지 않은 이상 둘 다 보안적인 측면에서 고만고만하다고 합니다. 

 

POST 방식은 서버의 값이나 상태를 변경하기 위하거나 추가하기 위해 사용됩니다. 

더보기

💡참고 사이트

1.MDN : HTTP caching

2. velog : HTTP완벽 가이드 ; 7장 캐시

3.티스토리 : Brower cache에 대하여

 

TCP 3-way-handshake

TCP와 UDP의 비교 

 

# UDP

사용자 데이터그램 프로토콜 (User Datagram Protocol ) 이라는 뜻으로 비연결형 프로토콜입니다. IP 데이터그램을 캡슐화 하여 보내는 방법과 연결 설정을 하지 않고 보내는 방법을 제공합니다. UDP는 흐름제어, 오류제어 또는 손상된 세그먼트의 수신에 대한 재전송을 하지 않습니다. ( ←  사용자 프로세스 몫. )

UDP가 행하는 것은 포트들을 사용하여 IP 프로토콜에 인터페이스를 제공하는 것 입니다. 

 

종종 클라이언트는 서버로 짧은 요청을 보내고, 짧은 응답을 기대합니다. 만약 요청 또는 응답이 손실 된다면 클라이언트는 time out이 되고 다시 시도할 수 있으면 됩니다. 코드가 간단하고 TCP처럼 초기설정(initial setup)에서 요구되는 프로토콜보다 적은 메세지가 요구됩니다. 

 

UDP를 사용한 것에는 DNS가 있습니다. 어떤 호스트 네임의 ITP 주소를 찾을 필요가 있는 프로그램은 DNS 서버로 호스트 네임을 포함한 UDP 패킷을 보냅니다. 이 서버는 호스트의 IP 주소를 포함한 UDP 패킷으로 응답합니다. 사전에 설정이 필요하지 않고, 그 후에도 해제가 필요하지 않습니다. 

 

* DNS (Domain Name System )

사람이 읽을 수 있는 도메인 이름 (Ex. www.naver.com  )을 머신이 읽을 수 있는 IP 주소 (Ex. 192.0.2.44 )로 변환 합니다. #AW-DNS 란?

 

# TCP

* 대부분의 인터넷 응용 분야들은 신뢰성 과 순차적인 전달을 필요로 하지만 UDP로는 이를 만족 시킬 수 없어 TCP와 같은 다른 프로토콜이    탄생하였습니다.

 

프로토콜 (Transmission Control Protocol)이라는 뜻으로 (데이터) 전송 제어를 위한 작업을 해주는 역할을 합니다. TCP는 신뢰성이 없는 인터넷을 통해 종단간에 신뢰성 있는 "바이트 스트림을 전송" 하도록 특별히 설계되었습니다. TCP 서비스는 송신자와 수신자 모두가 소켓이라고 부르는 종단점을 생성함으로써 이루어지며 TCP에서 연결 설정(connection establishment)는 3-way handsake를 통해 행해집니다. 

 

모든 TCP 연결은 전이중(full-duplex) - 양방향으로 동시 발생, 점대점(point to point) 방식 - 각 연결이 정확히 2개의 종단점을 가지고 있음 -입니다. TCP는 멀티캐스팅이나 브로드캐스팅을 지원하지 않습니다. 

 

HTTP와 HTTPS

HTTP  + 암호화 + 인증 + 완전성 보호 = HTTPS 

HTTPS는 SSL의 껍질을 덮어쓴 HTTP라고 할 수 있습니다. HTTPS는 새로운 애플리케이션 계층이 프로토콜이 아니라 HTTP통신하는 소켓부분을 SSL or TLS라는 프로토콜로 대체하는 것 뿐입니다. 

 

HTTP는 원래 TCP와 직접 통신했지만 HTTPS에서 HTTP는 SSL과 통신하고 SSL이 TCP와 통신하게 됩니다. SSL을 사용한 HTTPS는 암호화와 증명서, 안전성 보호를 이용할 수 있게 됩니다. 

 

HTTPS의 SSL에서는 공통키 암호화 방식과 공개키 암호화 방식을 혼합한 하이브리드 암호 시스템을 사용하며 공통키를 공개키 암호화 방식으로 교환한 다음 이후의 통신은 공통키 암호를 사용하는 방식입니다. 

 

 

🧐모든 웹 페이지에서 HTTPS를 사용해도 될까요

평문 통신에 비해서 암호화 통신은 CPI나 메모리 등 리소스를 더 많이 요구합니다. 통신할 때마다 암호화를 하면 추가적인 리소스를 소비하기 때문에 서버 한 대당 처리할 수 있는 리퀘스트의 수가 상대적으로 줄어들게 됩니다. 

 

하지만 최근에는 하드웨어의 발달로 HTTPS를 사용하더라도 속도 저하가 거의 일어나지 않으며, 새로운 표준인 HTTP 2.0을 함께 이용한다면 오히려 HTTPS가 HTTP보다 더 빠르게 동작합니다. 따라서 웹은 과거의 민감한 정보를 다룰 때만 HTTPS에 의한 암호화 통신을 사용하는 방식에서 현재 모든 웹 페이지에서 HTTPS를 적용하는 방향으로 바뀌어가고 있습니다. ✅FACT 체크 필요 (2023년 기준)

 

# HTTP의 문제점 보완 방법

  • HTTP는 평문 통신이기 때문에 도청이 가능
  • 통신 상대를 확인하지 않기 때문에 위장이 가능
  • 완전성을 증명할 수 없기 때문에 변조가 가능

위의 HTTP 문제점들은 암호화하지 않은 다른 프로토콜에도 공통으로 해당되는 문제점들입니다. 

 

 

(1) TCP/IP는 도청 가능한 네트워크 

TCP/IP 구조의 통신은 전부 통신 경로 상에서 엿볼 수 있습니다. 패킷을 수집하는 것만으로도 도청할 수가 있으며, 평문으로 통신할 경우 메세지의 의미를 파악할 수 있기 때문에 암호화하여 통신해야 합니다. 

 

※ 보완 방법  

  1. 통신 자체를 암호화 (SSL or TLS 프로토콜을 조합) - HTTP + SSL = HTTPS(HTTP Secure) or HTTP over SSL 
  2. 콘텐츠를 암호화. HTTP 메세지에 포함되는 콘텐츠만 암호화 하는 것으로 전송받은 측에서는 암호를 해독해서 출력하는 처리가 필요 

 

🍋🍋🍋🍋🍋🍋

 

 

(2) 통신 상대를 확인하지 않기 때문에 위장이 가능

HTTP에 의한 통신에는 상대가 누군지 확인하는 처리가 없기 때문에 누구든지 요청을 보낼 수 있습니다. IP주소나 포트 등에서 웹 서버에 접근 제한이 없는 경우 요청이 오면 상대가 누구든지 어떠한 응답(response)를 반환함으로써 여러 문제점을 유발합니다. 

 

예를 들어, 

  1. 요청을 보낸 곳의 웹 서버가 원래 의도한 응답을 보내야 하는 웹 서버인지 확인 불가
  2. 응답을 반환한 곳의 클라이언트가 원래 의도한 요청을 보낸 클라이언트인지 확인 불가
  3. 통신하고 있는 상대가 접근이 허가된 상대인지 확인 불가
  4. 어디에서 누가 요청 했는지 확인 불가
  5. DDos 공격 방어 불가 

※ 보완 방법  

  1. 암호화 방법으로(SSL) 상대를 확인 할 수 있음 - SSL은 상대 확인하는 수단으로 증명서를 제공(제 3자 기관에서 발행)

 

 

🍋🍋🍋🍋🍋🍋

 

 

(3) 완전성(정보의 정확성)을 증명할 수 없기 때문에 변조가 가능

서버 또는 클라이언트에서 수신한 내용이 송신측에서 보낸 내용과 일치함을 보장할 수 없는 것입니다. 요청이나 응답이 발신된 후에 상대가 수신하는 사이 누군가에게 변조되더라도 이 사실을 알 수가 없습니다. 

 

※ 보완 방법  

  1. MD5, SHA-1 등의 해시 값을 확인하는 방법과 파일의 디지털 서명을 확인하는 방법이 존재하지만 확실히 확인할 수 있는 것은 아닙니다. 확실히 방지하기 위해서는 " HTTPS"를 사용해야 합니다.                                                                * SSL에는 인증, 암호화, 다이제스트 기능 제공
더보기

💡참고 사이트

1. 블로그 : HTTPS는 HTTP보다 빠르다

2.

 

DNS Round Robin방식

 

### DNS 란? 
- Domain Name System의 약자로, (일종의 인터넷 전화번호부) 사람이 읽을 수 있는 도메인 이름( ex. www.google.com ) 을 컴퓨터가 이해하고 연결 할 수 있는 IP 주소로 변환하는 " 서버 네트워크에 의해 관리되는 " 분산 데이터베이스입니다.  **[ DNS 는 도메인 이름을 IP 주소에 매핑하는 시스템 ]** 

- DNS Round Robbin 방식 
DNS 서버 구성 방식 중 하나로 Domain 에 대한 IP 요청 쿼리 시 round-robbin 방식으로 IP 를 반환합니다. 시분할 시스템을 위해 설계된 선점형 스케쥴링의 하나로, 프로세스들 사이에 우선순위를 두지 않고, 순서대로 시간단위(Time Quantum/Slice) 로 CPU 를 할당하는 방식의 CPU 스케쥴링 알고리즘입니다. 각 프로세스에 일정 시간을 할당하고 할당된 시간이 지나면 그 프로세스는 잠시 보류한 뒤 다른 프로세스에게 기회를 주는 식으로 돌아가며 기회를 부여하는 운영 방식입니다.


    - 장점 : 로드 벨런서가 필요 없다. ( 부하에 대한 걱정을 할 필요가 없다. - 자동적으로 시간에 따라 스케쥴링이 변화되기 때문 ) 
    - 단점 
           1. 서버의 수 만큼 공인 IP 주소가 필요하다. 
           2. 균등하게 분산되지 않는다. 
           3. 서버가 다운되도 확인이 불가하다. 

 

> 참고 : DNS Round Robbin 방식

 

 

웹 통신의 큰 흐름