All'alba vincerò

At dawn, I will win!

CS 70

TCP/IP (5): Proxy 서버 - 클라이언트와 서버 사이에서 요청과 응답을 대신 전해주는 중간 서버

Proxy 서버: 클라이언트와 서버 사이에서 요청과 응답을 대신 전해주는 중간 서버 클라이언트와 서버 사이에서 중계 역할을 하는 서버사용자의 요청을 대신 서버에 전달하고, 응답도 대신 받아서 사용자에게 전달함클라이언트는 실제 서버에 직접 접근하지 않고 프록시 서버를 통해 간접적으로 접근속도 향상 (캐시 기능)자주 요청되는 데이터를 저장해두고, 빠르게 응답 가능네트워크 부하 감소ISP 회선을 줄이고, 원거리 트래픽을 줄여 네트워크 혼잡도를 줄여줌검열 회피 및 우회 접근 가능 클라이언트가 프록시 서버에게 데이터를 요청하면 → 프록시 서버는 프록시 서버의 IP로 대신 요청해주고, 그에 대한 응답을 전달해줌 Proxy 서버 작동 방식 예전 방식 (프록시 서버 없을 때)사용자가 유튜브에 '김치찌개 맛있게 끓..

CS/네트워크 2025.06.17

TCP/IP (5): HTTP - 웹 브라우저와 서버가 통신할 때 사용하는 프로토콜

HTTP (HyperText Transfer Protocol): 웹 브라우저와 서버가 통신할 때 사용하는 프로토콜 클라이언트(웹 브라우저)와 서버가 데이터를 주고받을 때 사용하는 형식 웹 서버 뿐만 아니라 API를 제공하는 방식으로도 많이 사용됨API (Application Programming Interface): 두 애플리케이션의 상호작용을 위해 서로 통신하는 법ex) 웹 브라우저에 감자.com를 검색하면 → 실제 요청은 http://www.감자.com 로 검색됨 ⇒ HTTP 프로토콜로 www.감자.com과 통신한다는 뜻 HTTP 버전 변화 사용자가 HTTP를 이용해 서버에게 요청을 보내면 서버와 TCP 커넥션을 확립하고, 서버는 사용자가 요청한 데이터를 보내주고 TCP 연결을 끊음 버전 특징..

CS/네트워크 2025.06.17

TCP/IP (5): Telnet, SSH - 원격 접속 프로토콜

Telnet & SSH 원격 접속을 위한 프로토콜 원격 로그인에서 사용다른 컴퓨터 앞에 직접 가지 않더라도 네트워크로 연결되어 멀리 떨어진 컴퓨터에도 로그인할 수 있음 Telnet (텔넷) : 안전하지 않은 원격 접속 프로토콜TCP 커넥션 하나를 이용해 원격 컴퓨터에 로그인하고, 사용자의 입력이 상대방 컴퓨터로 전송되어 실행됨 Telnet 덕분에 네트워크 관리자들은 물리적으로 떨어져있는 (라우터나 스위치 같은) 장치에 직접 가지 않고 사무실에서 로그인해 네트워크 설정을 할 수 있음Telnet은 로그인 시 비밀번호가 암호화 되지 않고 그대로 전송됨 → 중간에서 해킹 위험 O⇒ 이 문제를 해결하기 위해 SSH가 개발됨요즘은 Telnet은 거의 사용하지 않음 (SSH를 주로 사용) SSH (Secure..

CS/네트워크 2025.06.17

TCP/IP (5): DNS - 도메인명을 IP 주소로 변환

DNS (Domain Name Service): 도메인명(www.naver.com)을 IP 주소(223.130.195.200)로 변환하는 시스템 사용자가 호스트명을 입력하면, 자동으로 해당 호스트의 IP가 저장되어 있는 데이터베이스 서버로 연결되어 해당 호스트의 IP 주소를 알 수 있게 해주는 서비스호스트가 다른 호스트명을 모두 갖고 있는게 아니라 분산된 데이터베이스에 그때그때 물어봄DNS 덕분에 네트워크에 많은 호스트가 연결되더라도 중앙에서 전부 관리할 필요가 없어서 관리가 매우 편해짐 DNS의 탄생 배경 초기 인터넷 ARPANET에서는 hosts 파일을 만들어서 웹 사이트들의 호스트명을 데이터베이스에 저장해두고, 새로운 컴퓨터가 연결되면 이를 업데이트함 그리고 모든 컴퓨터는 이 hosts 파일을..

CS/네트워크 2025.06.17

MAC 주소: 기기를 구분하기 위한 용도의 주소

MAC 주소 (Media Access Control): 각각의 기기를 구분하기 위한 용도의 주소MAC 주소는 유무선 랜카드 뿐만 아니라 공유기(라우터), 스위치에 할당되어 기기를 구분하는 역할을 함데이터링크 계층에서 사용되는 기술기기가 만들어질 때 제조사에서 고유한 MAC 주소를 부여함제조사 간에 MAC 주소가 겹칠 일은 없음 → MAC 주소는 미국의 전기전자공학자협회(IEEE)에서 관리함총 48비트(6바이트)로 구성앞 24비트: 제조사 코드 (OUI라고 부름)전기전자공학자협회는 제조사를 구분할 수 있도록 MAC 주소의 앞 24비트에 제조사 코드를 부여함뒤 24비트: 해당 제조사의 기기별 고유 번호

CS/네트워크 2025.06.17

TCP/IP (5): 애플리케이션 계층, DHCP

애플리케이션 계층 (Application Layer) : 사용자와 가장 가까운 계층개발자는 애플리케이션 계층의 프로토콜을 이용해 애플리케이션을 만들 수 있음하위 계층의 동작을 몰라도 구현 가능 → 네트워크가 계층화 되었기 때문 DHCP (Dynamic Host Configuration Protocol): IP 주소를 자동으로 설정해주는 기능의 프로토콜애플리케이션 계층에 속한 프로토콜호스트의 IP를 (사용자가 직접 설정하는게 아니라) 컴퓨터가 적절한 IP로 자동으로 설정해주는 기능 개요컴퓨터에 인터넷을 연결하려면, 복잡한 IP 설정 과정을 거쳐야 함내 컴퓨터에 연결된 라우터와 같은 네트워크에서 겹치지 않는 IP 주소를 선택해 내 PC에 설정해줘야 함다른 사용자와 겹치지 않는 IP 주소를 알기 위해서는..

CS/네트워크 2025.06.17

TCP/IP (4): UDP - 신뢰성은 낮지만 속도가 빠른 프로토콜

UDP (User Datagram Protocol): 신뢰성이 낮지만 속도가 빠른 비연결형(비상태) 프로토콜(TCP와 비해) 신뢰성은 없지만 자유로운 프로토콜커넥션 없이 바로 일방적으로 데이터를 보냄↔ TCP: 3 way handshake로 커넥션을 확립데이터 전송 실패, 손상, 순서 변경에 대한 처리가 없음❌데이터가 분실되거나 재전송을 원하는 경우, 프로그래머가 직접 애플리케이션 계층에서 구현해야 함↔ TCP: 데이터가 분실되거나 손상되면 재전송 보장, 순서가 바뀐 데이터 재조립 가능UDP는 신뢰성을 보장하는 여러 절차를 생략하기 때문에 빠른 응답이 필요한 상황에 적합함실시간 스트리밍, 동영상, 음성, 게임 속도는 UDP처럼 빠르게, 신뢰성은 TCP처럼 보장하고 싶을 경우→ UDP + 애플리케이션 단에..

CS/네트워크 2025.06.16

TCP/IP (4): TCP 혼잡 제어

TCP 혼잡 제어 (Congestion Control): 송신 측이 데이터를 전송할 때, 네트워크 상태를 고려해서 얼마나 보낼지를 결정하는 기능 개요윈도우 크기가 커질수록 한 번에 더 많은 데이터를 보내기 때문에 통신 속도가 빨라지는 효과를 볼 수 있음→ 하지만 수신 측의 네트워크가 혼잡할 때 송식 측에서 너무 많은 데이터를 보내면 문제가 생김⇒ 네트워크가 혼잡해지는 것을 방지하기 위해 혼잡 제어를 함 슬로우 스타트 (Slow Start): 처음에 네트워크에 과부하를 주지 않도록 데이터를 작게 보내면서 시작하는 방식ex) 처음에는 네트워크 상태를 모르므로, 윈도우 크기를 1로 시작수신 확인(ACK)을 받을 때마다 윈도우 크기를 2배로 증가1 → 2 → 4 → 8 → ...동작송신 측에서 처음 데이터를..

CS/네트워크 2025.06.16

TCP/IP (4): TCP 흐름 제어

TCP 흐름 제어 (Flow Control): 송신자가 수신자의 처리 속도에 맞춰 데이터를 전송할 수 있도록 돕는 기능 개요사용자가 상대에게 데이터를 전송하면, 상대는 응답으로 ACK 메시지를 보냄→ 사용자는 상대에게 ACK 메시지를 받고 나서야 다음 데이터를 전송할 수 있음⇒ 덕분에 신뢰성 있는 데이터를 전송할 수 있지만, 단점이 존재함단점큰 데이터를 Segmentation으로 여러 개의 작은 데이터로 분할해서 전송함→ 하나를 전송하고 그에 대한 응답을 받은 다음에 데이터를 보내야 하니 속도가 떨어짐👎(세그먼트 하나 전송 → 응답을 기다린 후 → 다음 세그먼트 전송)데이터의 왕복 시간이 늘어날수록 통신의 성능이 급격하게 떨어짐👎해결이 문제를 해결하기 위해 한 번에 여러 개의 데이터를 보내는 방식을..

CS/네트워크 2025.06.16

TCP/IP (4): TCP 헤더

TCP 헤더: TCP 세그먼트의 앞부분에 붙는 제어 정보들 개요애플리케이션 계층에서 전송한 데이터는 트랜스포트 계층으로 전달됨→ 트랜스포트 계층에서는 이 데이터에 사용할 프로토콜의 헤더를 붙임(TCP를 이용하기 때문에 TCP 헤더가 붙음)⇒ 이 데이터가 세그먼트 TCP 구성 Source Port: 송신 측의 포트Destination Port: 수신 측의 포트둘 다 16비트로 구성2¹⁶ = 65536 ⇒ 0 ~ 65535번 포트까지 사용 가능 Sequence Number: 해당 데이터의 일련 번호데이터를 보낼 때 번호를 붙임(seq)"내가 지금부터 보낼 데이터의 위치”를 의미이 번호가 있어서 데이터의 순서가 뒤바뀌어 도착해도 원래 순서대로 복원할 수 있고, 데이터 누락 여부도 확인 가능함처음 ..

CS/네트워크 2025.06.16