CS ‐ 면접을 위한 Network - dnwls16071/Backend_Study_TIL GitHub Wiki
-
송수신지 유형별 전송 방식
- 유니캐스트(Unicast) : 하나 수신지에 메시지를 전송한다.(기본적인 일대일)
- 브로드캐스트(Broadcast) : 네트워크상의 모든 호스트에게 전송한다.(불특정 다수)
- 멀티캐스트(Multicast) : 네트워크 내의 동일 그룹에 속한 호스트에게만 전송한다.(특정 다수)
- 애니캐스트(Anycast) : 네트워크 내의 동일 그룹에 속한 호스트 중 가장 가까운 호스트에게 전송한다.
- 프로토콜(Protocol)
- 노드 간에 정보를 올바르게 주고받기 위해 합의된 규칙이나 방법
- IP는 패킷을 수신지까지 전달하기 위해 사용되는 프로토콜이다.
- HTTPS는 HTTP에 비해 보안상 더 안전한 프로토콜이다.
- TCP는 UDP에 비해 일반적으로 느리지만 신뢰성이 높은 프로토콜이다.
- 물리 계층 : 데이터를 전기 신호로 변환하는 계층
- 데이터링크 계층 : 네트워크 내 주변 장치 간 정보를 올바르게 주고받기 위한 계층
- 네트워크 계층 : 메시지를 수신지까지 전달하는 계층
- 전송 계층 : 신뢰성 & 안정성있는 전송을 해야 할 때 필요한 계층
- 세션 계층 : 세션을 관리하는 계층
- 표현 계층 : 문자를 컴퓨터가 이해할 수 있는 코드로 변환하거나 압축, 암호화
- 응용 계층 : 사용자가 이용하는 다양한 네트워크 서비스
- 네트워크 엑세스 계층 : OSI 7 Layer의 물리 계층, 데이터 링크 계층과 유사
- 인터넷 계층 : OSI 7 Layer의 네트워크 계층과 유사
- 전송 계층 : OSI 7 Layer의 전송 계층과 유사
- 응용 계층 : OSI 7 Layer의 세션 계층, 표현 계층, 응용 계층과 유사
- PDU는 각 계층에서 송수신되는 메시지의 단위
- 물리 계층 : 비트(bit)
- 데이터링크 계층 : 프레임(frame)
- 네트워크 계층 : 패킷(packet)
- 전송 계층 : 세그먼트(segment)
- 세션 계층 : 데이터(data)
- 표현 계층 : 데이터(data)
- 응용 계층 : 데이터(data)
- IP는 주소 지정과 단편화를 지원한다.
- 클라이언트 - 서버 간 IP 프로토콜을 사용해 패킷을 주고 받는다.
- 그러나 IP 프로토콜의 한계는 다음과 같다.
- 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 그대로 전송한다는 점
- 비신뢰성 : 중간에 패킷이 소실될 우려가 있고 패킷이 순서대로 가지 않을수도 있다는 점
- 프로그램 구분이 어렵다 : 애플리케이션을 구분할 방법이 없다는 점
- IP의 한계(애플리케이션 구분이 어렵다는 점)를 극복하기 위해 포트라는 개념이 등장했다.
- Well Known Port : 0 ~ 1023번 까지의 포트(잘 알려진 포트)
-
HTTP(80)
,HTTPS(443)
-
IP주소:Port번호
형식으로 특정 애플리케이션 프로세스를 식별한다.
- TCP : 신뢰할 수 있는 통신을 위한 연결형 프로토콜
- UDP : TCP보다 신뢰성은 떨어지지만 비교적 빠른 통신이 가능한 비연결형 프로토콜
- TCP는 연결형 서비스로 3-way handshaking 과정을 통해 연결을 설정하기 때문에 높은 신뢰성을 보장하지만 속도가 비교적 느리다. TCP는 상태를 유지하는 Stateful 프로토콜이다.
- UDP는 비연결형 서비스로 3-way handshaking 과정을 사용하지 않기 때문에 신뢰성이 다소 떨어지지만 데이터 수신 여부를 확인하지 않기 때문에 속도가 빠르다. UDP는 상태를 유지하지 않는 Stateless 프로토콜이다.
- 3-way handshaking은 TCP 연결 설정 과정으로, 클라이언트가 SYN 전송 -> 서버가 SYN+ACK 응답 -> 클라이언트가 ACK로 확인하는 단계입니다.
- 4-way handshaking은 TCP 연결 종료 과정으로, 클라이언트가 FIN 전송 -> 서버가 ACK 응답 -> 서버가 FIN 전송 -> 클라이언트가 ACK로 확인하는 단계입니다.
다른 이유: 4-way handshaking은 한쪽이 연결 종료를 원할 때 다른 쪽이 아직 전송할 데이터가 남을 수 있어서 비대칭적으로 진행되며 양방향 연결을 각각 독립적으로 종료하기 위해 4단계가 필요한 것입니다.
- HTTP는 요청 - 응답 기반 프로토콜이다.
- HTTP는 미디어 독립적 프로토콜이다.
- HTTP는 상태를 유지하지 않는(Stateless) 프로토콜이다.
- HTTP는 지속 연결을 지원하는 프로토콜이다.
- IP 주소만으로는 송수신지를 특정하는 것은 어렵기 때문에 DNS가 필요하다.
- DNS에서 IP주소를 도메인 네임에 대응시켜준다.
- HTTP는 평문 데이터를 전송하는 프로토콜이기 때문에 HTTP로 중요한 정보를 주고 받으면 제3자에 의해 조회될 수 있다.
- HTTPS는 SSL과 통신하고 SSL이 TCP와 통신함으로써 암호화와 증명서, 안전성 보호를 이용할 수 있다.
- 사용자가 웹 브라우저에 방문하고자 하는 URL을 입력한다.
- DNS 서버에 도메인 네임에 대응되는 서버 주소를 질의한다.
- 찾은 서버 주소로 웹 서버에 TCP 3-way handshaking로 연결을 수립한다.
- 클라이언트는 웹 서버로 HTTP 요청 메시지는 보낸다.
- 웹 서버는 클라이언트에게 HTTP 응답 메시지를 보낸다.
- 도착한 HTTP 응답 메시지는 웹 페이지 데이터로 변환되고, 웹 브라우저에 의해 출력된다.
- GET : 데이터 조회
- POST : 요청 데이터 처리
- PUT : 자원 대체
- PATCH : 자원을 부분적으로 수정
- DELETE : 데이터 삭제
- 쿠키는 클라이언트 PC에 저장된다. HTTP에서 클라이언트 상태 정보를 PC에 저장했다가 필요시 정보를 참조하거나 재사용할 수 있다.
- 쿠키는 서버에서 생성되어 클라이언트 측에 저장되는 데이터로, 상태를 유지하지 않는 HTTP 프로토콜을 보완하는 수단이다.
- 기본적으로 <이름, 값> 쌍의 형태를 가지고 추가로 여러가지 속성을 가질 수 있다.
- 세션은 일정 시간동안 같은 사용자로부터 들어오는 일련의 요구를 하나의 상태로 보고, 그 상태를 유지시키는 기술이다.
- 세션은 클라이언트 측에 저장되는 것이 아니라 서버 측에 저장된다.