Network - 질문 정리 Part 1

marafo·2021년 1월 19일
0

∙ 라우팅 테이블 - 메트릭 번호

하나의 라우터에 대하여 복수의 네트워크 경로가 연결되어 있을 때 어떤 기준으로 어느 네트워크에 연결할지 우선순위를 결정해서 IP 경로를 만든다. 인터페이스의 (자동)메트릭 번호가 작을수록 우선순위가 높아 그 쪽이 디폴트 게이트웨이가 된다.


∙ 패킷

네트워크 상에서 송수신하는 데이터를 일정한 크기로 자른 단위. 제어 정보와 사용자 데이터로 이루어져 있으며 페이로드라고도 불린다. 패킷마다 고유의 번호가 있고 양측이 이 패킷들을 주고 받을 수 있는 동일한 규약이 필요해져서 프로토콜이 등장하였다.


∙ HTTP/HTTPS 개념 및 차이점

HTTP(Hyper Text Transfer Protocol)

클라이언트-서버 모델에 따라 메시지, 데이터를 통신하고 교환하는 방식을 정의하는 프로토콜로 TCP/IP 기반이다. well-known 범위에 있는 80번 포트를 사용하며 요청(Request), 응답(Response)로 구성되어 하이퍼텍스트(HTML)를 가져와서 교환한다.

1) 비연결지향(connectionless)
서버로부터 클라이언트가 요청에 대한 응답을 받은 후 프로토콜 연결이 끊긴다. 요청하는 클라이언트가 소수면 상관이 없지만 많아지면 서버에 부하가 생기기 때문이다. 요청시마다 오버헤드가 발생한다. HTTP 1.1 버전부터 이 연결 상태는 지속성을 디폴트로 가지며 해제 하려면 따로 헤더를 요청해야 한다.

2) 무상태성(stateless)
클라이언트의 요청마다 상태를 메모리 해놓지 않고 독립적으로 받아들이므로 쿠키, 세션, 토큰, OAuth, JWT 등이 사용된다.

대표적인 메서드는 다음과 같다.

Get : 서버에 리소스 조회 요청 => Read
Post : 클라이언트 본문에 생성할 데이터 삽입 후 서버에 전송 => Create
Put : 클라이언트 본문에 대한 데이터의 수정사항을 삽입 후 서버에 전송 => Update
Delete : 서버에 데이터 삭제 요청 => Delete
Patch : 서버에 데이터 일부만 수정 요청

클라이언트 요청에 대한 서버의 응답 상태코드는 다음과 같다.

1xx : 요청에 대한 정보를 표시하고 해당 요청 작업을 계속 한다.
2xx : 요청 성공적 처리.
3xx : 요청완료를 위한 클라이언트의 부가적 동작 요구. 리다이렉트
4xx : 클라이언트 오류. 401(권한 없음), 403(금지), 404(찾을 수 없음)
5xx : 서버 오류. 501(요청한 기능 없음), 503(서비스 사용 불가)

HTTPS(HyperText Transfer Protocol over TLS/SSL) ***

HTTP 방식에 암호 보안을 결합해 만든 프로토콜. TCP 연결 바인딩 후에 TLS(Transport Layer Security) 암호화 과정을 지나야 HTTP를 통해 통신을 할 수 있는 방식이다.

HTTPS의 보안 암호화에 관련된 사항들은 다음과 같다.

Public Key, Private Key : 공개키는 모두가, 비밀키는 암호 소유자만이 가지고 있는 키로 암호화된다.
대칭키 암호화 : 서버와 클라이언트가 암호화, 복호화에 대해 같은 비밀키를 사용한다. 키 공유가 어렵지만 속도가 빠르다.


∙ HTTP에서 POST, GET 방식의 차이

GET : 서버에 url Query 방식으로만 데이터를 전달할 수 있어서 보안 문제가 발생한다. 이런 부분 때문에 GET은 데이터를 가져오는 방식에 더 적합하다.

POST : 서버에 전달하려는 데이터를 헤더에 결합해서 전송한다. 데이터를 확인하기 위해 반드시 헤더를 조회해야 한다. 특히 HTTPS에서 POST는 HTTP의 그것보다 보안성에 강점을 가지므로 DB 갱신, 서버 데이터 전송에 적합하다.


∙ 프록시 서버(Proxy Server)

프록시 서버는 요청 내용들을 캐시에 한 번 저장했다가 차후 같은 요청에 들어오면 기존 캐시에 있는 정보를 불러와서 전송시간의 절약이 가능하다.

만약 프록시 서버를 이용해 네이버 포털 웹으로 접속할 때 프로세스는 다음과 같다.
1 ) 사용자가 웹 브라우저에 네이버 웹 주소 입력
2 ) 주소 입력 요청을 프록시 서버로 전달해서 해당 주소의 캐시 조회
3 ) 캐시 miss이면 외부회선으로 네이버 페이지가 있는 서버의 대문 페이지 가져오기
4 ) 캐시 hit이면 서버에서 해당 페이지가 최신버전인지 체크
5 ) 최신이 아니라면 갱신된 부분을 업그레이드.


∙ 디폴트 게이트웨이(Default Gateway)

라우터는 기본적으로 같은 네트워크안에서 브로드캐스트를 할 수 있고 브로드캐스트 범위를 넘어서는 경우엔 외부 네트워크 수신처의 MAC 주소를 알지 못한다. 브로드캐스트 도메인 범위를 넘어서는 통신을 할 때 디폴트 게이트웨이는 네트워크 외부로 연결되는 출입구로서, 현재 로컬 라우터와 외부의 라우터 사이의 통로 역할을 한다.
타 네트워크에 데이터를 보내기 위해서 가장 먼저 디폴트 게이트웨이에 전송해야하고 ARP를 통해 디폴트 게이트웨이의 MAC 주소를 찾을 수 있다. MAC 주소와 더불어 필요한 IP 주소는 수동이나 DHCP 방식에 의해 미리 설정해두어야 한다.


∙ IP, ISP, VPN, FTTH

IP(Internet Protocol Address) : 네트워크 상의 컴퓨터와 기기들이 서로를 인식하고 통신하기 위해 사용하는 ID 번호이다.

ISP(Internet Service Provider) : 인터넷 서비스 공급자.

VPN(Virtual Private Network) : 가설시설망으로 ISP와 데이터를 공유하지 않고 익명성을 가진 채로 인터넷에 접속하는 네트워크 방식이다.

FTTH(Fiber To The Home) : 광케이블을 통해 인터넷을 제공하는 서비스


∙ TCP/IP 프로토콜 4 계층

1) 네트워크 액세스 계층(1 계층) : Network Interface 계층이라고도 한다. OSI 7계층의 물리 계층(1 계층), 데이터 링크 계층(2 계층)에 해당하며 LAN, WAN, MAN 등의 네트워크 표준 프로토콜 정의와 패킷망 등이 사용된다. 물리적인 주소로 MAC 주소를 사용한다.

2) 인터넷 계층(2 계층) : Internet Layer. OSI 7 계층의 네트워크 계층(3 계층)에 해당하고 통신 기기의 노드간에 IP 패킷을 전송하고 라우팅 기능(데이터 경로 설정)을 한다. 여기서 쓰이는 프로토콜로 IP, ARP(Address Resolution Protocol, IP주소를 MAC(Media Access Control)주소로 변환해주는 프로토콜), RARP(Reverse ARP, MAC -> IP 주소) 등이 있다.

3) 전송 계층(3 계층) : Transport Layer. OSI 7 계층의 전송 계층의 역할을 한다. IP 프로토콜이 사용되는 인터넷 계층의 에러나 데이터 송수신에서 생긴 문제점을 해결하는 계층이다. 사용되는 프로토콜은 TCP(Transmission Control Protocol), UDP(User Datagram Protocol)가 있다.

4) 응용 계층(4 계층) : Application Layer. OSI 7 참조 모델의 세션, 표현, 응용 계층 5 ~ 7 계층에 해당한다. FTP(File Transfer Protocol, 파일 전송용), HTTP(Hyper Text Transfer Protocol, 홈페이지 열람용), SSH(Secure Shell Protocol, 통신간 보안용) 프로토콜이 있다. TCP/UDP을 활용한 애플리케이션을 구현할 때 사용한다.


∙ OSI 7 계층에서 전송 계층(4 계층) - MSS, MTU, Sequence Number

MTU(Maximum Transmission Unit) : TCP/IP 네트워크 통신에서 한 번에 송수신할 수 있는 패킷이나 프레임의 최대 크기를 정의한다.

MSS(Maximum segment) : TCP 헤더, IP 헤더를 제외한 순수 데이터의 크기
MSS = MTU - IP header - TCP header

Sequence Number : 네트워크 통신 체계에서 패킷을 보낼 때 그 순서에 맞게 붙이는 번호


∙ Cast 종류

유니캐스트(Unicast)

1:1 데이터 통신으로 원하는 하나의 대상의 기기와 통신할 수 있다. 각각의 기기는 적어도 1개 이상, 그리고 유일한 유니캐스트 주소를 가지고 있다.

브로드캐스트(Broadcase)

1 : 전체 데이터 통신으로 자신을 제외한 모든 대상(기기나 네트워크)과 통신한다.

멀티캐스트(Multicast)

1 : multi 데이터 통신으로 원하는 복수의 대상들과 통신할 수 있다. 멀티캐스트는 그룹군과도 같은 개념이라 중복된 주소를 가질 수 있다. 단 같은 멀티캐스트 주소를 가져도 유니캐스트 주소는 유일해야 한다.


∙ TCP/UDP 개념 및 차이점

1 ) TCP(Transmission Control Protocol)

transmission에서 알 수 있듯이 전송, 송신, 통신을 제어하는 연결 지향의 프로토콜을 의미한다. 프로세스간의 프로토콜이라 할 수 있다. 그리고 송신처와 수신처가 양방향으로 데이터를 주고 받을 수 있는 전이중 통신 기능을 지원한다.

중간에 패킷이 손실되면 SYN(연결 순서 동기화)-ACK(확인응답 필드값의 유효함)을 통해 재전송한다. 파일이나 데이터 전송의 대부분 경우에 사용된다. 주고 받는 데이터를 의미상으로 구분하지 않고 바이트의 연속성으로 끊고 세그먼트화 해서 통신하는 바이트 스트림 서비스를 제공한다. 하지만 통신 속도가 늦는다는 단점이 존재한다.

2 ) UDP(User Datagram Protocol)

User란 단순히 네트워크 이용자가 아니고 개발자가 만드는 데이터그램 프로토콜이라 할 수 있다. UDP는 TCP/IP 4 계층의 역할인 흐름 제어, 오류 제어를 최소한의 수준에서 실행하며 연결 매커니즘을 제공하지 않는다. 따라서 순서가 보장되지 않지만 굉장히 빠른 속도로 통신을 할 수 있게 된다. 또 UDP는 다른 프로세스로부터 받은 데이터를 필터링하지 않고 단지 수신자에게 신뢰성을 보장하지 않고 전달하는 기능만 수행한다. TCP에 비해 굉장히 느슨하게 최소한의 기능만 있다고 볼 수 있다.

통신을 위해 포트 번호를 필요로하며 멀티캐스트, 브로드캐스트를 요구하는 통신에 사용된다. 통신하는 패킷수가 적은 경우, 통화 음성 같은 멀티미디어 통신, 단순 요청응답 통신에도 활용되고 있으며 최소한의 오버헤드를 지향한다.

결론적으로 TCP와 UDP는 각자의 장단점이 크로스되는 점을 확인할 수 있다.


∙ User Datagram

UDP의 실제 패킷이 되는 데이터그램은 크게 8 바이트 헤더와 데이터 부분으로 나뉜다. 헤더를 구성하는 4가지 요소(각 2 바이트)는 다음과 같다.

포트 번호 정의

  • well-known port : 0 ~ 1023
  • registered port : 1024 ~ 49151
  • dynamic port :49152 ~ 65535

1 ) 발신자 포트 번호(2 bytes, 16 bit)

송신처 호스트 상에서 사용되는 포트의 번호. 송신처가 클라이언트라면 UDP가 정해준 임시 포트 번호, 서버라면 well-known 포트안에서 결정된다.

2) 수신자 포트 번호(2 bytes, 16 bit)

수신처 호스트 상에서 사용되는 포트의 번호. 수신처가 클라이언트일 때 임시 포트 번호, 서버일 때 well-known 포트 범위에 있다.

3 ) 전체 길이(2 bytes, 16 bit)

(UDP 헤더 + 데이터)의 전체 데이터그램의 길이를 의미한다. IP 데이터그램에 의해 캡슐화되는 영역이라 필요성은 떨어진다.

UDP 길이 = IP 전체 길이 - IP 헤더 길이

4 ) 검사합(Checksum)

전체 사용자 데이터그램의 오류를 검사한다. 의사헤더(Pseudoheader), UDP 헤더, 응용계층에서 온 데이터를 포함한다.


∙ url 주소 입력 후 프로세스


∙ 3 Handshaking, 4 Handshaking

3 Handshaking : 네트워크 통신(특히 TCP에서)을 하는 두 호스트가 통신을 하기 전에 통신 및 논리적 접속이 가능한지 리허설 개념으로 신호와 응답을 주고 받는다.

Step 1

HOST A => HOST B SYN 패킷을 전송하고 HOST A는 SYN/ACK 응답을 대기한다. HOST A State : SYN_SENT

Step 2

HOST B => HOST A SYN + ACK 패킷 발송. HOST B는 A로부터 다시 돌아올 ACK 응답을 대기한다. HOST B state : SYN_RECEIVED

Step 3

HOST A => HOST B ACK 응답을 보내고 통신이 가능한 상태를 확정. HOST B State : ESTABLISHED

4 Handshaking : TCP 연결을 종료하기 위한 프로세스의 신호와 응답

Step 1

HOST A => HOST B FIN flag(연결 종료) 신호 전송

Step 2

HOST B => HOST A ACK 응답 전송. HOST B State : TIME_WAIT

Step 3

HOST B => HOST A 통신이 종료가 되었다는 FIN 신호 전송.

Step 4

HOST B는 ACK 응답을 통해 확인 메시지 전송


참고)

HTTP/HTTPS 개념 및 차이점
https://developer.mozilla.org/ko/docs/Web/HTTP/Overview
https://github.com/baeharam/Must-Know-About-Frontend/blob/master/Notes/network/http.md
https://github.com/baeharam/Must-Know-About-Frontend/blob/master/Notes/network/https.md
https://velog.io/@yeon/TIL-2%EC%9B%94-1%EC%9D%BC

패킷
https://ko.wikipedia.org/wiki/네트워크_패킷

Cast 종류
∙ 3분 네트워크 101p
https://hyonee.tistory.com/136

TCP/IP 프로토콜 4 계층
∙ 3분 네트워크 69p
https://hahahoho5915.tistory.com/15
https://hyonee.tistory.com/136
https://peemangit.tistory.com/207

TCP/UDP 개념 및 차이점
http://www.ktword.co.kr/abbr_view.php?nav=&m_temp1=347&id=428
https://hyonee.tistory.com/136
∙ 이론 중심 TCP/IP 이해하기 208p, 244p

User Datagram
∙ 이론 중심 TCP/IP 이해하기 246p
https://whackur.tistory.com/98

디폴트 게이트웨이(Default Gateway)
∙ 3 분 네트워크 194p

HTTP에서 POST, GET 방식의 차이
https://kadamon.tistory.com/22

프록시 서버(Proxy Server)
https://namu.wiki/w/프록시%20서버
https://kadamon.tistory.com/22

라우팅 테이블 - 메트릭 번호
http://egloos.zum.com/genes1s/v/2534048
https://docs.microsoft.com/ko-kr/troubleshoot/windows-server/networking/automatic-metric-for-ipv4-routes
∙ 3분 네트워크 212p

3 Handshaking, 4 Handshaking
https://bignet.tistory.com/73
https://mindnet.tistory.com/entry/네트워크-쉽게-이해하기-22편-TCP-3-WayHandshake-4-WayHandshake

url 주소 입력 후 프로세스
https://deveric.tistory.com/97
https://github.com/baeharam/Must-Know-About-Frontend/blob/master/Notes/network/type-url-process.md

profile
프론트 개발자 준비

0개의 댓글