URL(Uniform Resource Locator)이란?

흔히 웹사이트 주소라고 불린다. 웹사이트 주소라고 하면 와닿지 않을 수 있어서 설명하자면, 웹에 게시된 리소스 중 원하는 것을 검색하기 위해 브라우저엣 사용하는 메커니즘이라고 볼수 있다.

더 쉽게 말하자면, 전송받고 싶은 웹페이지를 지정하는 것이다.

 

 

*URL을 일반 우편주소로 비유하면 더 쉽게 느낄수있음.

- 스킴            => 사용하려는 우편서비스

- 도메인명     => 시 또는 마을

- port             => 우편 번호

- path            => 메일이 배달되어야 하는 건물

- parameter   => 아파트 번호와 같은 추가 정보

- 앵커            => 메일을 보낸 실제 사람

 

URL 구성 

<스킴>://<호스트명>/<경로명>

 

1. 스킴

웹 브라우저가 웹서버의 데이터에 접속하기 위한 프로토콜을 의미한다.

(프로토콜 : 네트워크에서 데이터를 교환하거나 전송하기 위한 규약)

 

2. 호스트

전 세계 서버중, 리소스를 요청할 하나의 서버를 특정한다.

서버컴퓨터 IP에 이름을 부여한 도메인 네임을 보통 입력하나,  서버컴퓨터 IP로 입력할수도 있다.

 

3. 포트번호

웹서버에서 자원에 접근하기 위해 사용하는 게이트.

웹 서버와 통신시 사용하는 포트번호는 80번 이므로, 보통 생략한다.

 

4. 경로

웹서버에서 자원에 대한 경로

 

정리

* 간략히 말하면, URL은 전송받고 싶은 리소스가 있는 웹서버와 그 파일을 나타낸다.

 

http://www.n-study.com/network/index.html 라는 url이 있다면, 

www.n-study.com  이라는 서버에 http 요청을 하는거다.

너네가 인터넷에 공개한 network디렉토리 안에 있는 index.html이라는 파일을 http 응답을 통해 보내줘! 

 

 

 

 

출처: https://developer.mozilla.org/ko/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL

'CS > 네트워크' 카테고리의 다른 글

HTTP  (0) 2023.06.14
DNS  (0) 2023.06.14
로드밸런싱  (0) 2023.06.14
TCP/UDP  (0) 2023.06.09
TCP/IP 4계층 모델  (0) 2023.06.09

HTTP

애플리케이션 Layer의 프로토콜로 웹 서비스 통신에 이용.

 

HTTP/1.0

연결 관리 방식이 비지속 연결이다.

하나의 연결당 하나의 요청만을 처리하도록 설계되었기 때문에,

 

서버로부터 파일을 가져올때마다 TCP 3-way handshake를 해서 RTT 증가

RTT 증가를 해결하기 위한 방법

- 이미지 스플리팅 (css에서 다루었던 스프라이트 이미지 사용하는 방식)

- 코드압축

- 이미지 base64 인코딩

 

 

HTTP/1.1

Keep-Alive 옵션이 표준화되어,

한번의 TCP 연결 후, 여러개의 파일 송수신 가능.

 

현재는 웹에서 인터페이스 구성을 위해 많은 리소스가 필요하고, 리소스 요청마다 응답이 바로바로 이루어져야 하기 때문에 지속적 연결이 필요하다!

 

문제점

- 헤더의 중복

  : 다양한 기능 지원에 따라, 헤더에 쿠키 등 많은 메타데이터가 담기는데 매 요청마다 불필요한 데이터가 중복 전송되므로 대역폭 낭비가 있다는 단점.

- HOL Blocking

  : 멀티플렉싱이 안되기 때문에, 네트워크에서 같은 큐에 있는 패킷이 이전 패킷에 의해 지연될때 발생하는 성능 저하를 말합니다.

- 클라이언트 요청이 없으면 서버는 먼저 데이터 전송 못함.

 

HTTP/2

- 헤더 압축

- 멀티플렉싱

  : 여러개의 스트림을 사용해 송수신.

    => 단일 연결로 병렬로 여러 요청 받을 수 있고 응답을 줄 수 있다.

    => HOLB 해결

- 서버 푸시

  : 클라이언트가 요청하지 않더라도 서버가 리소스를 직접 푸시 할수있음

    => 전송시간이 훨씬 단축.

 

 

문제

HOL Blocking은 해결되었으나, TCP의 HOLB가 해결 안됨.

TCP는 순서대로 응답이 와야하는데 어느하나 loss되면 전체 연결이 중단됨.

 

HTTPS/3

특징

- 초기 연결 설정 시 지연시간 감소

   : QUIC 계층 위에서 돌아가며, TCP가 아닌 UDP기반으로 돌아가므로 3-way handshake를 거치지 않아,

     지연시간이 감소한다.

 

 

HTTPS

간략히 말하면 신뢰할 수 있는 HTTP이다.

애플리케이션 layer와 전송layer 사이에 보안을 제공하는 SSL/TLS 계층을 넣음

이를 통해, 클라이언트-서버 통신 시 제 3자가 정보를 볼 수 없도록 암호화를 지원한다. 

 

 

웹 통신시 사용되는 메소드

 

GET (URL로 데이터 전달)
헤더에 url이 담겨서 전송. 뒤에 "?"를 붙여서 request하는 방식
보안이 필요한 데이터에 대해선 안좋음!  "?"뒤에 붙여야해서 제3자도 볼수있으므로.

 

일반적으로는 어떤 값을 받기 위해 사용한다.



POST(body로 데이터 전달)
데이터 크기가 GET에 비해 큼.
서버에 값을 추가, 상태를 변경하거나 할때 쓰임.

 

 

 

 

출처: https://velog.io/@goldenoriole34/%EC%9B%B9-%EA%B8%B0%EC%B4%88-0dbflnxu

https://brunch.co.kr/@swimjiy/39 , 면접을 위한 cs 전공지식노트

'CS > 네트워크' 카테고리의 다른 글

URL  (0) 2023.06.25
DNS  (0) 2023.06.14
로드밸런싱  (0) 2023.06.14
TCP/UDP  (0) 2023.06.09
TCP/IP 4계층 모델  (0) 2023.06.09

DNS(Domain Name System)

 

도메인을 IP 주소로 변환하려면 DNS서버에 도메인 쿼리하는 과정은 필수다.

 

하지만, DNS 서버 없이 로컬에서 도메인과 IP주소를 직접 설정해 사용할 수가 있다.

로컬에서 도메인과 IP주소를 관리하는 파일을 hosts 파일이라고 부른다.

 

전에 한번 쿼리한 즉, 동일한 도메인을 계속 쿼리한다면 성능면에서 안좋다는건 당연한 일.

 

따라서 DNS 서버에 쿼리하기전, DNS 캐시 정보를 먼저 확인한다.

DNS서버에 쿼리하여 응답받은 정보는 캐시에 저장되므로

 

 

 

@ www.naver.com을 주소창에 입력하면 어떤일이 일어나는지?

1. 텍스트 정보확인

2. 네트워크 호출

3. 렌더링

 

여기서 네트워크 호출에 관해 다뤄보면,

 

브라우저가 네이버라는 사이트를 화면에 출력하려면 여러 데이트를 가지고 있어야하는데,

이 데이터는 서버 컴퓨터와 통신하여 받아와야한다.

 

크게 두가지 과정으로 나눠볼 수 있다.

1. 네이버 서버의 ip address 찾기

  (1) 자신의 hosts 파일에서 도메인 네임에 대응하는 ip 주소 있는지 먼저 확인한다.

  (2) 로컬에 있는 DNS 캐시 확인

  (3) DNS 질의

2. 알아낸 주소 기반으로 서버와 통신하여 데이터 응답받기

  (1) 3-way handshaking을 통해 TCP 연결

  (2) 연결성공하면 http request

  (3) http response로 데이터 응답받기.

 

 

'CS > 네트워크' 카테고리의 다른 글

URL  (0) 2023.06.25
HTTP  (0) 2023.06.14
로드밸런싱  (0) 2023.06.14
TCP/UDP  (0) 2023.06.09
TCP/IP 4계층 모델  (0) 2023.06.09

로드밸런싱

말 그대로, 부하(load)를 분산(balancing)시키는 기술이다.

 

왜 필요할까?

하나의 인터넷 서비스를 이용하는 client가 한두명이라면 서버는 여유롭게 사용자가 원하는 결과를 응답할수있다,

그러나 천만명의 client가 요청을 보낸다면??

 

서버는 좋은 퍼포먼스를 내기 어려울 것이다.

문제를 해결하는 방법에는

  • scale-up : 하드웨어 성능을 올리는 기법
  • scale-out : 여러대의 서버를 추가하여 확장하는 기법. (scale-out 방식으로 인프라를 증설하기로 하였다면, Load Balancing이 필요하다.)

다시 돌아와서, 로드밸런서는 이러한 로드밸런싱 기술을 제공하는 장치이다.

 

로드밸런서는 클라이언트와 애플리케이션 서버들 사이에 위치한다.

로드밸런서를 두어 대용량 트래픽을 분산시킨다면 서버는 최적의 퍼포먼스를 지속할 수 있고, 사용자에게 무중단 서비스를 제공할 수 있다.

 

로드밸런서의 역할

  • 인터넷에서 들어오는 트래픽을 가로채 어느 서버로 갈것인지 결정한다.(특정 서버의 부하를 덜어줌)
  • 서비스 중단 없이, 애플리케이션 서버들과 통신하여 서버를 추가할지 뺄지 결정한다. (유연성 제공)
  • Active한 서버에만 요청을 전송한다.(높은 가용성, 신뢰성)

로드밸런서의 기능

  • Health check : 서버들의 상태확인을 위해 주기적으로 서버에 요청 보냄. (L4체크는 TCP의 3-way handshaking을 통해, L7체크는 실제 웹페이지와 통신시도를 통해)
  • Tunneling : 데이터를 캡슐화하여 연결된 노드만 그 캡슐화된 패킷을 해제하여 볼 수 있게 함.
  • NAT : 사설 네트워크에서 사용하던 IP주소를 로드밸런서의 공인 IP주소로 변경.(반대과정도 포함)
  • DSR : 서버에서 클라이언트로 되돌아 갈때, 로드밸런서 거치지 않고 다이렉트로 가는 방식

로드밸런싱 알고리즘으로는 Round Robin, Weighted Round Robin, IP Hash, Least Connection, Least Response Time 등이 있다.

'CS > 네트워크' 카테고리의 다른 글

URL  (0) 2023.06.25
HTTP  (0) 2023.06.14
DNS  (0) 2023.06.14
TCP/UDP  (0) 2023.06.09
TCP/IP 4계층 모델  (0) 2023.06.09

TCP(Transmission Control Protocol)

TCP의 특징

  • 가상회선 패킷 교환방식 --> 순서보장
  • 연결지향 ( 3-way handshake)
  • 신뢰성
  • 흐름제어
  • 혼잡제어

하지만 단점으로는 최소처리량을 보장하지 않고, 속도가 UDP에 비해 느리다.

 

흐름제어란?

데이터를 송신하는 곳과 수신하는 곳의 데이터 처리 속도를 조절하여 수신자의 버퍼 오버플로우를 방지하는 것입니다

 

혼잡제어란?

네트워크 내의 패킷수가 넘치지 않도록 방지.

 

TCP 연결 성립 및 해제 과정

 

TCP Connection

1. SYN 단계 (클라이언트 -> 서버)

 서버에 접속을 요청하는 SYN 패킷 전송 후 SYN_SENT 상태가 된다.

 

2.  SYN+ACK 단계 (서버-> 클라이언트)

  ACK : 요청을 수락했다는 메시지

  SYN : 접속 요청 프로세스인 클라이언트도 포트를 열어달라는 메시지

 

3. ACK 단계(클라이언트-> 서버)

  클라이언트는 서버의 응답을 받았다는 의미로 , 서버의 ISN+1 하여 다시 서버로 ACK를 보낸다.                                   

  ACK를 보내고 클라이언트는 ESTABLISHED 상태로 변경, 서버도 ACK 받고 ESTABLISHED로 상태 변경

 

TCP Disconnection

 

 

 

 

상태  
CLOSED 닫힌상태
LISTEN 포트가 열린 상태로 연결 요청 대기중
SYN_SENT SYN 요청을 한 상채
SYN_RECEIVED SYN 요청을 받고 상대방의 응답 기다리는중
ESTABLISHED 연결이 확인된 상태

 

UDP(User Datagram Protocol)

데이터그램 패킷 교환방식 사용.---> 순서 보장X

신뢰성 없다.

 

UDP는 비연결형 프로토콜로서, 에러검사 등 신뢰성과 관련된 기능들을 제공하지 않아 Best Effort service 라고 불린다. 

(최선을 다할게 하지만 결과는 보장못해 같 느낌이라고 한다..ㅋㅋ)

 

장점: 오버헤드가 작고 지연시간이 짧다.(전송속도 빠름)

 

온라인게임, 스트리밍서비스 등 신뢰성보다는 성능이 중요시되는 경우에 사용.

 

  TCP UDP
연결방식 연결형 서비스 비연결형 서비스
패킷 교환 방식 가상 회선 방식 데이터그램 방식
순서보장 전송 순서 보장 순서보장X
신뢰성 신뢰성 높음 신뢰성 낮음
속도 느림 빠름
     
     

 

 

출처: https://velog.io/@hidaehyunlee/TCP-%EC%99%80-UDP-%EC%9D%98-%EC%B0%A8%EC%9D%B4

'CS > 네트워크' 카테고리의 다른 글

URL  (0) 2023.06.25
HTTP  (0) 2023.06.14
DNS  (0) 2023.06.14
로드밸런싱  (0) 2023.06.14
TCP/IP 4계층 모델  (0) 2023.06.09

TCP/IP 4계층 모델

OSI계층이 좀더 학문적인 느낌이라면, OSI 이론을 실제로 실무에서 사용하는 인터넷 표준이 TCP/IP 4계층이다.

 

계층을 나누는 이유?

통신이 일어나는 과정을 단계별로 파악하기 용이하여, 특정 계층에서 장애 발생하더라도 다른 계층의 장비나 소프트웨어를 건들이는 헛수고를 안할수 있다는 장점.

 

TCP/IP 프로토콜

상위 계층 TCP : 메시지나 파일을 좀 더 작은 패킷으로 나누어 전송하고, 받은 패킷은 원래의 메시지로 조립하는 일 담당.

하위 계층 IP : 각 패킷의 주소부분을 처리하여 패킷들이 목적지에 정확하게 도달할 수 있도록함.

 

1. 네트워크 인터페이스 계층

OSI7계층의 물리계층과 데이터링크계층에 해당.

실제로 TCP/IP 패킷을 주고받는 계층이다. 

 

통신시 MAC주소를 사용하며,

수행하는 기능으로는 에러 검출, 패킷의 프레임화 등이 있다.

자세한 특징은 아래 OSI 7계층의 물리,데이터링크 계층에서 각각 설명.

 

프로토콜 종류: Ethernet 등이 있다.

 

2. 인터넷 계층

가장 중요한 기능은 Routing(경로설정: 데이터를 목적지까지 가장 안전하고 빠르게 전달하는 기능)

그외에도 Addressing(IP주소부여), packaging 이 있다.

 

네트워크상 최종 목적지까지 정확하게 연결되도록 연결성을 제공한다.

 

프로토콜 종류: IP, ARP, RARP, ICMP

 

3. 전송 계층

프로토콜 종류: TCP, UDP

 

*전송계층이 수행하는 기능은 TCP, UDP를 나누어 추후에 정리할예정.

 

4. 애플리케이션 계층

OSI 7계층의 세션,표현,응용 계층에 해당

사용자를 위한 UI 인터페이스 소프트웨어, 입출력 부분 등을 담당한다.

 

프로토콜 종류: FTP, HTTP, SSH, SMTP, DNS 

 

*DNS에 대해서 따로 다룰예정.

OSI 7계층 모델

 

1. 물리 계층 (단위: 비트)

  컴퓨터와 네트워크 장비를 연결하고 장치간 전송되는 데이터를 전기 신호로 변환( 비트->전기신호, 전기신호->비트)

  유선과 무선이 있으며 , 유선이 일반적이다.

  흔히 쓰이는 UTP케이블을 예로 들수있음.

 

대표적인 장비로는 랜카드, 리피터, AP, 허브 등이 있다.

 

-NIC: 0과 1만으로 이루어진 비트열을 랜카드로 전송하여 전기 신호로 변환(데이터 송수신)
 유선 랜카드, 무선 랜카드 있음.
-리피터: 약해진 신호를 증폭하여 다른쪽으로 전달.
먼 거리에 신호가 가야할때, 중간에 리피터 배치하여 중계하도록 할때 쓰임
-AP(Access Point): 무선 기기들은 AP에게 무선신호를 전송하고, AP는 해당 신호를 유선신호로 변환하여 네트워크에 전달. 즉, 유선네트워크와 무선네트워크를 연결하는 역할을 한다.


2.4Ghz/5Ghz의 무선신호가 저절로 utp cable 구리동선으로 들어가서 신호가 변환이 되어 갈 수는 없으므로.

 

그렇다면 핸드폰에서 WIFI접속하여 '네이버주소'를 입력하면?

--> 휴대폰이 검색명령을 무선신호로 AP에게 전송한다.

AP는 해당 신호를 유선신호로 변환하여 유선네트워크로 전달하고, 유선네트워크에서 검색결과를 받아 무선신호로 변환하여 다시 휴대폰에 전송함.  

 

 

2. 데이터링크 계층 (단위: 프레임)

'직접 연결된' 서로 다른 2개의 네트워크 장치간 데이터전송을 담당. 

데이터 링크 계층에서는 말 그대로 직접 연결된 장치와 통신만 생각한다. 그 외의 통신관련 문제는 해당 계층에서는 고려x

즉, 물리 계층에서 사용되는 장비를 이용하여 호스트 사이의 연결 및 데이터 전송 기능과 관리를 하는 계층이다.

 

MAC Address 가지고 통신

우리가 흔히 아는 ip주소간의 통신은 이 MAC주소의 통신의 연속된 과정이라고 볼수있다.

MAC주소는 컴퓨터나 노트북에 있는 LAN카드를 구별하기 위한 식별번호라고 한다.(물리적 주소)

 

수행하는 서비스로는

- 프레이밍 : 데이터 배열에 Data, Header, Trailer 등을 넣어서 캡슐화(Encapsulate) 진행 

- 흐름제어 : 송신자와 수신자의 처리 속도간의 차이를 해결하기 위한 제어. (송신 측이 수신 측의 데이터 처리속도보다 빠른 속도로 데이터를 보낸다면 버퍼가 길어질 것이며, 버퍼의 길이는 제한되어있으므로)

- 에러확인 : 에러를 검출하는 방법에는 직접 수정하는 방법 수신받은 데이터배열을 폐기하고 송신측에 데이터를 재요청 하는 방법이 있다.

 

이더넷 프레임을 통해 에러확인, 흐름제어, 접근제어 등을 수행

 

대표 장비로 브리지, 스위치가 있음.

-스위치: 장치들의 MAC주소를 맥 주소 테이블로 관리. 패킷 전송을 담당.
-브리지: 두개의 LAN을 상호 접속 할수있도록 연결.
 포트와 포트 사이의 다리 역할.

 

 

3. 네트워크 계층 (단위: 패킷)

원하는 곳으로 잘보내고 있는지, 효율적인 방법으로 보내는지 어떻게 보장하느냐? -->이거를 네트워크 계층이 담당한다.

 

ip주소는 데이터 통신시의 시작점과 끝점을 의미,

MAC주소는 직접적으로 연결된 노드와 통신할때 사용되는 주소.

 

프로토콜 종류 : IP, ARP, RARP

 

라우터: 일종의 지능이 있는 경로 배정기

공유기 : 2개의 서로 다른 네트워크를 연결.

공인 ip주소를받아서 연결되는 실제 네트워크와 가상으로 192.168.x.x 주소를 부여하는 사설 네트워크(LAN)를 연결시켜서 사설 네트워크에 연결된 pc가 실제 인터넷에 연결되게 한다.

일종의 NAT기능 DHCP기능 추가된 라우터

무선공유기: 유선공유기+ap느낌 (ap는 nat기능 없음)

 

4. 전송 계층 (단위: 세그먼트(TCP), 데이터그램(UDP))

5. 세션 계층

6. 표현 계층

7. 애플리케이션 계층

1

 

 

 

 

이미지 출처 : https://devowen.com/344

'CS > 네트워크' 카테고리의 다른 글

URL  (0) 2023.06.25
HTTP  (0) 2023.06.14
DNS  (0) 2023.06.14
로드밸런싱  (0) 2023.06.14
TCP/UDP  (0) 2023.06.09

+ Recent posts