HTTP
[HTTP] 컴퓨터 네트워크
날아
2023. 1. 30. 02:02
0. 컴퓨터 네트워크
네트워크 4계층
- 애플리케이션 계층 - HTTP, FTP
- 전송 계층 - TCP, UDP
- 인터넷 계층 - IP
- 네트워크 인터페이스 계층
애플리케이션 계층
- 사용자가 실제로 체감할 수 있는 서비스를 제공한다. (ex. 프로그램 : 웹 브라우저, 웹 서버)
- 애플리케이션 계층의 프로그램은 데이터의 내용을 보고 그에 맞는 서비스를 처리한다.
- 보고싶은 웹 페이지의 URL을 클라이언트 PC가 요청하면, 웹 서버 컴퓨터에서 웹 페이지의 HTML 데이터를 응답한다. 클라이언트는 응답으로 받은 데이터를 해석하여 웹 페이지 형태로 표시한다.
- (데이터 전송은 하위 계층에 위임)
트랜스포트 계층
- 애플리케이션 계층에서 전달받은 데이터를 목적지 애플리케이션 계층의 프로그램까지 전달
- 어떤 프로그램들이 서로 통신을 해야하는지 헤더에 기록한다.
- 제대로 전달되지 않았을 때 재전송
웹 브라우저의 3000번 포트에서 웹 서버의 80번 포트로 요청을 보낸다.
인터넷계층
- 데이터에 어드레스 정보(IP)를 덧붙여 목적지까지 무사히 전달한다.
- 라우터 장비 사용
클라이언트 PC(123.241.251.120)에서 웹 서버 컴퓨터 (121.000.000.000)로 요청한다.
네트워크 인터페이스 계층
- 유선 혹은 무선 LAN 어댑터가 처리할 수 있는 형태로 데이터를 변환하고 인접한 장비나 컴퓨터까지 데이터를 전달한다.
컴퓨터 네트워크
- 여러 대의 컴퓨터를 서로 연결하여 데이터를 주고받을 수 있도록 사전에 구축된 망 (ex. 인터넷, 이메일)
통신규약과 프로토콜
- 컴퓨터끼리 통신을 하려면 어떤 절차에 따라 무엇을 보낼 것인가에 대한 규칙
- 전송이 잘 되지 않았을 때 어떻게 할 것인지에 대한 대안
- TCP/IP는 프로토콜의 집합 (프로토콜 중 가장 유명한 친구들)
1. IP
- 역할
- 지정한 IP 주소에 데이터 전달
- 패킷이라는 통신 단위로 데이터 전달
- 한계
- 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
- 비신뢰성 : 중간에 패킷이 사라지면? 패킷이 순서대로 안오면?
- 프로그램 구분 : 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?
패킷 교환 방식
- 컴퓨터 네트워크에서는 이메일이나 파일과 같은 데이터를 패킷이라는 작은 단위로 분할한 후 주고받는다.
- 패킷은 자신이 어디로 전달되어야 하는지 알 수 있도록 어드레스 정보(IP)를 가지고 있다.
- 주고받을 데이터를 작게 쪼갠 후 다른 데이터의 조각들과 통신 경로를 공유하기 때문에 여러 상대와 통신할 때 효과적이다.
2. TCP / UDP
TCP 특징 - 전송 제어 프로토콜
- 연결지향 - TCP 3 way handshake (가상 연결) : 상대방 컴퓨터가 꺼져있으면 연결 잘 안됨
- 데이터 전달 보증 : 패킷이 중간 누락시에 내가 알 수 있음
- 순서 보장
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP 사용
TCP 3 way handshake
UDP 특징
사용자 데이터그램 프로토콜
- 하얀 도화지에 비유 (기능이 거의 없음)
- 연결지향 - TCP 3 way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
<정리>
IP와 거의 같다. + PORT, 체크섬 정도만 추가
애플리케이션에서 추가 작업 필요
UDP를 왜 쓰지? TCP에서 3 way 등의 때문에 더 오래 걸릴 수 있다.
더 최적화를 할 수 있을 때 TCP는 건드릴 수 없고, UDP를 건드릴 수 있다.
3. 포트 (Port)
- 포트란? 내가 하나의 IP로 음악을 듣거나 게임을 할 수 있다.
- 서버에서 패킷이 전송되었을 때 음악관련 패킷인지 게임관련 패킷인지 포트를 통해서 알 수 있다.
- 같은 IP내에서 프로세스 구분 (ex. 게임(8090), 화상통화(21000), 웹 브라우저(10010))
- IP:아파트, 포트:동호수 느낌?
- 클라이언트가 사용하는 포트는 그때그때 다르다.
4. DNS - 도메인 네임 시스템
- (IP는 외우기 어렵고, 변경될 수 있다. )
- 전화번호부. 도메인 명을 IP주소로 변환
- 도메인 이름과 IP 주소에 대한 정보를 관리하는 시스템
- 클라이언트는 IP 주소를 몰라도 된다.
DNS 동작 과정
- (클라이언트가) 브라우저 캐시 확인
- (클라이언트가) hosts 파일과 캐시 확인
- 둘 다 없을 경우 DNS 서버에 해당 도메인의 IP주소 요청
- DNS 서버가 IP 응답
DNS 서버 분리
- DNS는 도메인을 계층적이게 관리해 서버를 분리한다. (트래픽과 데이터를 분산)
- 계층 구조에 따라 서버들이 배치되어 있다. 이러한 서버들을 네임 서버(NS)라고 부른다.
- Root NS : 국제인터넷주소관리기구 (ICANN)
- TLD NS : 도메인 등록 기관 (Registry)
- Sub Domain NS : 도메인 판매 업체 (Register)
- ex)가비아, Route53
권한있는 네임서버, 권한없는 네임서버
- DNS 정보를 가지고 있는 네임서버는 권한 있는 네임서버라 부른다.
- Root NS, TLD NS, Sub Domain NS
- DNS 정보를 가지고 있지 않는 네입서버는 권한 없는 네임서버라 부른다.
- 로컬 DNS 서버
- 로컬 DNS 서버는 클라이언트의 요청을 받은 뒤 자체 캐시를 확인하고, 없을 경우 권한 있는 네임서버에 차례로 요청한다.
- 클라이언트와 권한있는 네임서버를 연결해주는 중간다리 역할
- 재귀적 질의 : 클라이언트와 로컬 DNS서버 간의 요청과 응답
- 반복적 질의 : 로컬 DNS서버와 권한있는 네임서버들간의 요청과 응답
출저
인프런 강의 모든 개발자를 위한 HTTP 웹 기본 지식 (김영한 강사님)
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard
https://www.youtube.com/watch?v=sDXcLyrn6gU&list=PLgXGHBqgT2TvpJ_p9L_yZKPifgdBOzdVH&index=20