CS/네트워크 10

[네트워크] TCP와 UDP의 차이

TCP와 UDP는 OSI 7 계층의 전송 계층에서 사용되는 프로토콜이다. TCP와 UDP는 데이터를 전달하는데 사용되지만 정확성을 추구하는 TCP와 신속성을 추구하는 UDP는 각각 방식이 다르다. 이번에 TCP와 UDP의 차이를 알아보고 UDP가 어디에 사용되는지 알아보자. TCP TCP는 클라이언트와 서버가 연결된 상태에서 데이터를 주고받는 연결 지향적 프로토콜이다. 연결을 위해서 3-way handshake를 사용하며 클라이언트가 연결 요청을 하면 서버는 연결을 수락한다. 서버가 연결을 수락했다면 고정적인 통신 선로가 생기고 이를 통해 데이터를 주고받을 수 있다. 이를 통해 TCP는 1:1 통신만 가능하다는 것을 알 수 있다. TCP는 신뢰성있는 데이터 전송을 하기 때문에 클라이언트가 전송하는 모든 ..

CS/네트워크 2021.09.30

[네트워크] HTTPS의 개념과 동작 원리

HTTPS는 HTTP에 보안이 강화된 프로토콜이라는 것을 알고있다. 프로젝트를 진행하면서 SSL 인증서를 발급받아 HTTPS로 요청할 수 있도록 했던 경험도 있다. 하지만 정확히 HTTPS가 어떻게 동작하는지 알지 못했기 때문에 이번 기회에 HTTPS의 개념과 동작원리를 이해하려고 한다. HTTPS의 개념 HTTP는 TCP/IP 위의 애플리케이션 계층에서 사용되는 프로토콜이다. 여기서 HTTPS는 TCP/IP위에 SSL 또는 TLS를 통해 보안을 강화한 프로토콜이다. 이를 통해 모든 HTTP의 요청과 응답은 암호화된다. HTTPS 동작을 알아보기 전에 알아두어야 할 개념 HTTPS의 동작 원리를 알아보기 전에 대칭키, 공개키, CA(Certificate Authority)를 이해해야한다. 1. 대칭키 암..

CS/네트워크 2021.09.24

[네트워크] HTTP의 특성

이전에 HTTP의 기본 동작을 정리하였다. 이후에 프로젝트를 진행하면서 HTTP의 특성들을 알게 되었고 따로 정리를 해야 할 필요가 있다고 생각하였다. HTTP는 클라이언트-서버 구조를 갖고, Stateless, Connnectionless, 대부분의 파일 형식을 전송할 수 있다는 4가지의 특성이 있다. 클라이언트 - 서버 구조 HTTP는 클라이언트가 서버에 요청하는 단방향 통신이며 서버는 요청이 있을 때에만 응답하는 구조를 갖고 있다. 이때 서버는 요청한 것을 처리한 결과에 따라서 다른 응답을 보낸다. 예를 들어 특정 URL로 이동했을 때 해당 URL이 존재하지 않을 때는 404 응답을 보낸다. 또한 정상적으로 이동했을 때는 200 계열의 응답을 보내게 된다. Stateless HTTP는 상태를 저장하..

CS/네트워크 2021.09.23

[네트워크] 프록시 서버를 사용하는 이유

프록시 서버가 무엇일까? 프록시 서버는 클라이언트와 서버 사이의 중계역할을 한다. 클라이언트가 서버에 직접적으로 데이터를 요청하지않고 프록시 서버에 요청을 한다. 프록시 서버는 클라이언트의 요청을 서버에 전달한 후에 받은 데이터를 클라이언트에 전달한다. 프록시는 포워드 프록시, 리버스 프록시가 존재한다. 이는 프록시 서버를 어디에 위치시키느냐에 따라 달라지는데 클라이언트 측에 위치시키는 것을 포워드 프록시, 서버 측에 위치시키는 것을 리버스 프록시라고 한다. 포워드 프록시는 아래의 그림처럼 표현할 수 있으며 일반적으로 포워드 프록시를 프록시라고 한다. 브라우저에서 구글검색을 하면 프록시 서버에서 데이터를 받아 서버에 요청 후에 값을 돌려준다. 이러한 방식은 대역폭을 감소시키고 서버가 어떤 클라이언트가 요..

CS/네트워크 2021.07.21

[네트워크] 서버의 부하를 분산하는 방법

클라이언트의 요청이 많을수록 웹 서버의 부하가 높아지게된다. 이때 웹 서버가 어떻게 부하를 분산하는지 알아보자. 서버의 부하 분산 서버의 부하를 분산하기 위해 3대의 웹 서버를 사용한다고 해보자. 그렇다면 각각의 서버가 담당하는 패킷의 수가 감소할 것이다. 하지만 1대의 웹 서버가 동작하지 못하는 상황이 온다면 클라이언트들은 이러한 상황을 모르고 계속해서 액세스할 것이기 때문에 비효율적이다. 로드 밸런서 이때 웹 서버와 클라이언트 사이에 로드 밸런서를 둘 수 있다. 로드 밸런서는 클라이언트의 요청을 대신 받아 서버에 전달하는 역할을 하는데 DNS 서버에 로드 밸런서의 주소를 등록하여 사용한다. 따라서 클라이언트는 웹 서버가 아닌 로드 밸런서에 요청을 하고 로드 밸런서는 웹 서버에서 받은 요청을 클라이언트..

CS/네트워크 2021.07.20

[네트워크] 방화벽의 동작원리

방화벽은 외부 네트워크로부터 내부 네트워크를 보호하는 역할을 한다. 방화벽을 설치하지 않는다면 외부 네트워크에 그대로 노출이 되어있는 상태가 되기 때문에 공격받기가 쉬워진다. 따라서 방화벽의 설치는 필수적이다. 방화벽은 종류에 따라 동작하는 원리가 조금씩 다르다. 오늘은 방화벽의 기본 동작과 종류에 대해 알아보자. 방화벽의 기본 동작 방화벽은 외부에서의 모든 접속을 차단한다. 이후 보안 규칙에 따라 일부 요청을 내부 네트워크로 접속할 수 있도록 허가하고 포트번호를 통해 특정 프로그램에만 접근할 수 있도록 한다. 예를 들어 어떠한 패킷이 웹 서버로 전송되었다면 80번 포트를 열어 해당 패킷이 접속할 수 있도록 허용한다. 방화벽의 종류는 패킷 필터링형, 상태 분석형, 웹방화벽 등이 있으며 종류에 따라 동작방..

CS/네트워크 2021.07.19

[네트워크] 네트워크 장비

실제로 클라이언트와 서버가 주고받는 신호는 전기신호이며 이는 다양한 네트워크 장비를 통해 통신이 이루어진다. 네트워크 장비의 종류와 역할을 알아보자. 리피터 패킷을 전기신호로 변환하여 전송한다. 이때 전기신호가 이동하는 거리가 먼 경우 신호의 세기가 약해진다. 펄스형태로 신호를 보냈지만 수신측에서 어떠한 모양의 신호도 받지 못할 수도 있다. 따라서 중간에 신호를 증폭하여 원래의 펄스형태로 보내질 수 있도록 한다. 전기신호가 이동하는 케이블의 길 경우 중간에 리피터를 설치하여 신호를 증폭한다. 허브 허브는 여러 대의 컴퓨터를 묶어주는 기능을 한다. 허브에 패킷이 들어오면 허브에 연결된 컴퓨터에 패킷을 전송하는데, 허브에 연결된 모든 컴퓨터에 전달하여 자신에게 온 것이 아니면 폐기하는 허브를 리피터 허브라고..

CS/네트워크 2021.07.12

[네트워크] TCP/IP

IP에서 사용 중인 패킷 교환 방식은 송신자가 수신자에게 보낼 데이터를 분할하여 패킷 형태로 송신한다. 이때 수신자는 여러 송신자로부터 패킷을 받게된다. 이때 네트워크의 상황에 따라 패킷의 순서가 달라지거나 전송되지 않을 수도 있다. 따라서 TCP에서 패킷이 흐름대로 수신자에게 전달될 수 있도록 도와준다. 결론적으로 IP는 패킷을 목적지까지 전달하는 것에만 집중을 하고 TCP는 패킷의 흐름을 관리하여 신뢰성을 확보한다. 그렇다면 IP와 TCP가 어떻게 동작하는지 자세히 알아보자. TCP의 동작과정 DNS에서 IP주소를 받아온 이후에 서버에 바로 데이터를 전송하지 않는다. 먼저 서버의 상태를 확인해야한다. 현재 서버가 나의 데이터를 받을 수 있는지 확인한 후에 데이터 전송이 이루어져야한다. 이를 위해 TC..

CS/네트워크 2021.07.08

[네트워크] DNS

DNS(Domain Name System)은 문자열 형태로 되어있는 URL을 숫자로 되어있는 IP주소로 치환해준다. 그렇다면 DNS가 왜 필요한지, 어떻게 동작하는지 알아보자. IP 주소를 그대로 사용한다면? 만약 google, naver 등에 접속하기 위한 주소를 숫자로 기억해야한다면 쉽지 않을 것이다. www.google.com으로 입력하면 될 것을 32bit의 수를 기억하여 원하는 정보를 검색해야 한다면 불편할 것이기 때문에 이러한 IP 주소대신 문자열 형태로 되어있는 도메인이름을 사용한다. 하지만 실제로 데이터를 전송하기 위해서는 IP주소가 필요하다. 따라서 브라우저에 입력한 도메인이름에 해당되는 IP주소를 찾는 과정을 거치게된다. 근데 이 과정에서 번거롭게 도메인이름에 해당되는 IP주소를 찾고 ..

CS/네트워크 2021.07.07

[네트워크] HTTP

프로토콜은 어떻게 메시지를 주고받을지 규칙을 정해놓은 것이다. WEB 상에서 클라이언트와 서버는 HTTP를 통해 메시지를 주고받는다. 클라이언트는 HTTP를 통해 "무엇을", "어떻게" 등의 정보를 서버에 전달하고 서버는 HTTP를 통해 응답에 대한 결과를 전달한다. HTTP의 탄생 유럽 입자 물리학 연구소의 팀 버너스 리 박사는 World Wide Web을 개발하였고 WWW를 구성하는 기술인 HTML, HTTP, URL 등을 고안해냈다. HTML의 경우 웹 상에서 주고받는 문서를 작성할 수 있는 마크업 언어이며 HTTP는 이러한 문서를 전송하기 위한 프로토콜, URL은 문서의 주소를 정하는 방법이다. HTTP의 기본 동작 클라이언트(브라우저)가 서버에 요청을 할 때는 "무엇을", "어떻게"와 부가적인 ..

CS/네트워크 2021.07.07
728x90
반응형