#09 네트워크

LastCarol·2022년 7월 13일

회선교환 방식

즉시성이 떨어짐 : 전용선을 연결하고 둘만 연결하는 방식이기 때문에 둘 이상 1번과 2번이 연결 중일때 3번이 1번과 연결하고 싶다면 2번이 연결이 끝날 때 까지 기다려야하는 단점이 있음

패킷교환 방식

패킷이라는 단위로 데이터를 잘게 나누어 전송하는 방식 (소포 보내는 방식)

각 패킷의 출발지와 목적지 정보가 있고 목적지를 향해 가장 효율적인 방식으로 이동

특정 회선이 전용선으로 할당되지 않기 때문에 빠르고 효율적으로 데이터를 전송할 수 있음

그래서 IP라는 프로토콜에 목적지와 출발지 정보를 숫자로 표기하고 패킷단위로 데이터를 전송함

IP와 IP 패킷

IP패킷안에 출발지 IP 목적지 IP 정보가 들어 있음

패킷 단위로 전송을 하면 노드들은 목적지 IP에 도달하기 위해 서로 데이터를 전달

복잡한 인터넷 망 사이에서도 정확한 목적지로 패킷을 전송할 수 있음

서버에서 무사히 데이터를 전송받는다면 서버도 이에 대한 응답을 돌려줘야 함

이러한 방법에도 두가지 단점이 있다.

비연결성: 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 전송

비신뢰성: 패킷순서를 보장할 수 없고 패킷이 중간에 손실될 수 있음

TCP/UDP

IP패킷에 단점을 보완하고자 나왓음

네트워크 프로토콜 계층은 다음과 같이 OSI 7계층과 TCP/IP 4 계층으로 나눌 수 있음

실제 네트워크 표준은 업계표준을 따르는 TCP/IP 4 계층에 가까움

OSI 7계층 : 응용계층, 표현계층, 세션계층, 전송계층, 네트워크 계층, 데이터링크 계층, 물리적계층

(두음 아파서티나다피나다로 암기하자)

TCP/IP 4계층: 어플리케이션 계층, 전송계층, 인터넷 계층, 네트워크 인터페이스 계층

채팅프로그램에서 메세지를 보낼 때를 예를 들어보자

HTTP 메세지가 생성되면 소켓이 생성

네트워크 소켓이란? 프로그램이 네트워크에서 데이터를 송수신할 수 있도록, “네트워크 환경에 연결할 수 있게 만들어진 연결부

IP패킷을 생성하기전 TCP 세그먼트(TCP/IP 패킷) 생성

TCP/IP 패킷은 LAN 카드와 같은 물리적 계층을 지나기 위해 이더넷 프레임 워크에 포함되어 서버로 전송

TCP 세그먼트에는 IP 패킷의 출발지 IP와 목적지 IP 정보를 보완할 수 있는 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등을 포함

TCP의 특징?

연결지향, 데이터 전달 보증, 순서보장, 신뢰가능한 프로토콜

왜 신뢰가능함?

3 way handshake 방식을 사용하기 때문

클라이언트가 서버로 접속 요청하기 위해 syn 보냄

그러면 서버가 클라이언트한테 요청수락이라는 의미로 SYN와 ACK 보냄

클라가 서버한테 ACK 보내고 데이터 전송

다시 서버가 클라한테 응답해줌

즉 데이터 전송이 성공적으로 이루어진다면 이에 대한 응답을 돌려주기 때문에 신뢰가능함

UDP란?

하얀도화지 (기능이 거의 없음)

비연결 지향

데이터 전달 보증 x

순서보장 x

그대신 속도가 빠름

실시간 스트리밍에 많이 사용됨

HTTP

클라이언트 서버 구조

무상태 프로토콜 비연결성

HTTP 메세지

단순함 확장가능

무상태? 서버가 클라이언트 상태를 보존하지 않음

비연결성? 실제로 요청을 주고받을 때만 연결을 유지하고 응답을 주고 나면 TCP/IP 연결을 끊음

최소한의 자원으로 서버 유지

캐시 검증헤더

검증 헤더 Last Modified를 이용해 캐시의 수정시간을 알 수 있음

Last Modified는 데이터가 마지막으로 수정된 시간 정보를 헤더에 포함함 이로 인해 응답 결과를 캐시에 저장할 때 데이터 최종 수정일도 저장됨

HTTP Body는 응답 데이터에 없으며 상태 코드는 304 Not Modified로 변경된 것이 없다는 뜻

프록시 캐시

프록시란? 클라이언트와 서버 사이에 대리로 통신을 수행하는 것을 가리켜 ‘프록시(Proxy)’, 그 중계 기능을 하는 서버

클라이언트, 혹은 반대로는 서버가 다른 네트워크에 간접적으로 접속할 수 있기 때문에, 보안, 캐싱을 통한 성능, 트래픽 분산 등의 장점을 가짐

캐시 지시어

Cache-Control: public : 응답이 public 캐시에 저장되어도됨

Cache-Control: private: 응답이 해당 사용자만을 위한 것, Private 캐시에 저장해야댐

Cache-Control: s-maxage: 프록시 캐시에만 적용되는 max-age

age:60(http 헤더) : 오리진 서버에서 응답 후 프록시 캐시 내에 머문 시간

Cache-Control: no-cache: 데이터는 캐시해도 되지만, 항상 원 서버에 검증하고 사용

Cache-Control: no-store : 데이터에 민감한 정보가 있으면 저장하면 안됨

Cache-Control : must-revalidate: 캐시 만료 후 최초 조회 시 원 서버에 검증해야함

원서버 접근 실패시 반드시 오류가 발생해야함

Pragma: no-cache : HTTP 1.0 하위 호환

profile
프론트엔드 엔지니어가 되기 위해 노력합니다.

0개의 댓글