1.1 웹은 HTTP로 나타낸다
이 흐름을 결정하는 프로토콜(약속)
-> HTTP(HyperText Transfer Protocol) 라는 약속을 사용한 통신을 함
1.2 HTTP가 등장한 배경
- - 멀리 떨어져 있는 사람들을 연결하는 시스템 즉 WWW(웹)을 구성하는 기술
- 기술언어 HTML(HyperText Markup Language)
+ 문서 전송 프로토콜 HTTP
+ 문서의 주소를 지정하는 방법 URL(Uniform Resource Locator)
1.3 네트워크 기본 TCP / IP
◆TCP/IP는 프로토콜의 집합
- 네트워크에서 사용되는 프로토콜이다.
- 프로토콜 : 서로 다른 HW, OS가 서로 통신을 하기 위해서 필요한 규격
- 케이블 규격, IP주소 지정방법, 웹에 표시하기 위한 순서 등...인터넷 프로토콜들을 모은것을 TCP/ IP라고 부른다.
◆4계층(Layer)로 관리
▷계층화 시 메리트
- 인터넷이 하나의 프로토콜로 되어 있다면 어디선가 사양이 변경되었을 때 전체를 바꾸지 않으면 안된다.
하지만 계층화 되어 있다면 변경된 해당 계층만 바꾸면 됨 - 설계가 편함
▷애플리케이션 계층
- 유저에게 제공되는 애플리케이션에서 사용하는 통신의 움직임 결정
- FTP, DNS, HTTP
▷트랜스포트 계층
- 애플리케이션 계층에 네트워크로 접속되어 있는 2대의 컴퓨터 사이의 데이터 흐름 제공
- TCP(Transmission Control Protocol), UDP(User Data Protocol)
▷네트워크 계층
- 네트워크 상에서 패킷(데이터의 최소단위)의 이동을 다룸
- 어떠한 경로를 거쳐 컴퓨터까지 패킷을 보낼지 결정
- ex)인터넷 : 상대 컴퓨터에 도달하는 동안 여러대의 컴퓨터, 네트워크 기기를 거치는데 이 중 하나의 길을 정하는 것
▷링크 계층 (or 데이터, 네트워크 인터페이스)
- 네트워크에 접속하는 HW적인 면 다룸
◆TCP / IP 통신의 흐름
양방향 통신
- 트랜스포트 계층 TCP에서 애플리케이션 계층에서 받은 데이터(HTTP 메세지)를 통신하기 쉽게 조각내어
안내번호와 포트번호를 붙여 네트워크 계층에 전달 - 네트워크 계층 IP에서 수신지 MAC 주소를 추가하여 링크계층에 전달
- 서버는 링크계층에서 데이터를 받아들임
- 애플리케이션 계층에 도달하면 클라이언트가 발신한 HTTP 리퀘스트 내용을 수신할 수 있음
TCP/IP(Transmission Control Protocol / Internet Protocol)
컴퓨터 사이의 통신 표준 및 네트워크의 라우팅 및 상호연결에 대한 자세한 규칙을 지정하는 프로토콜 슈트
- OSI 7 Layer 중에서 Layer 3, Layer 4를 다룬다.
Transport Layer(4 Layer) 전송 계층
송신자와 수신자의 논리적 연결(Connection)을 담당하는 부분,
신뢰성 있는 연결을 유지할 수 있도록 도와준다.
즉 Endpoint(사용자) 간의 연결을 생성하고 데이터를 얼마나 보냈는지 얼마나 받았는지,
제대로 받았는지 등을 확인합니다. TCP와 UDP가 대표적이다.
Network Layer(3 Layer) 네트워크
IP(Internet Protocol)이 활용되는 부분으로, 한 Endpoint가 다른 Endpoint로 가고자 할 경우,
경로와 목적지를 찾아줍니다. 이를 Routing이라고 하며 대역이 다른 IP들이 목적지를 향해
제대로 찾아갈 수 있도록 돕는 역할을 한다.
출처: OSI 7 Layer 쉽게 이해하기
[네트워크 엔지니어 환영의 AWS 기술블로그]
- IP 주소 체계를 따르고 IP Routing을 이용해 목적지에 도달하며
- TCP의 특성을 활용해 송신자와 수신자의 논리적 연결을 생성하고 신뢰성을 유지할 수 있도록 한다.
즉 송신자가 수신자에게 IP 주소를 사용하여 데이터를 전달하고
그 데이터가 제대로 갔는지, 너무 빠르지는 않는지, 제대로 받았다고 연락은 오는지에 대한 이야기를 하는 것
IP : 패킷들의 관계를 이해하지 못하고 그저 목적지를 제대로 찾아가는 것에 중점을 둔다면
TCP : 통신하고자 하는 양쪽 단말(endpoint)이 통신할 준비가 되었는지, 데이터가 제대로 전송되었는지,
데이터가 가는 도중 변질되지는 않았는지, 수신자가 얼마나 받았고 빠진 부분은 없는지 등을 점검
->이런 정보는 TCP Header에 담겨있다.
TCP Header
TCP Header에는 신뢰성 보장과 흐름 제어, 혼잡 제어에 관여할 수 있는 요소들도 포함되어있다.
또한 IP Header와 TCP Header를 제외한 TCP가 실을 수 있는 데이터 크기를 '세그먼트(Segment)'라고 부른다.
TCP는 IP의 정보뿐만 아니라 Port를 이용하여 연결한다.
한쪽 단말(Endpoint)에 도착한 데이터가 어느 입구(Port)로 들어가야 하는지 알아야 연결을 시도할 수 있기 때문이다.
Source Port와 Destination Port
예를 들어, 양쪽 단말(Endpoint)이 HTTP로 이루어진 문서를 주고받고자 할 경우
데이터 통신을 하려면 Endpoint의 3306 Port도 아니고, 21 Port도 아닌 80 Port로 연결해야 합니다.
거대한 부산항에 도착했을 때 화물선인 나의 데이터가 상항(화물이 정박하는 항)에 들어가야지 어선항(어선이 정박하는 항)에 들어가면 안 되는 것처럼 말이다...
신뢰성 있는 연결을 맺고 데이터를 전송하기 위해 3-way handshake 사용
1.4 ,5, 6 HTTP와 관계가 깊은 IP/TCP/DNS
◆IP (Internet Protocol) - 배송
- 네트워크 층, 프로토콜의 명칭
- 개개의 패킷을 상대방에게 전달
- 전달에 필요한 요소
- IP주소 : 각 노드에 부여된 주소, 변경o
- MAC(Media Access Control Address) : 네트워크 카드에 할당된 고유에 주소, 변경x - 통신은 ARP를 이용하여 MAC 주소에서 한다.
- IP 통신은 MAC 주소에 의존하여 통신을 한다.
- 인터넷에서 통신 상대가 같은 랜선 내에 있을 경우는 적다. -> 여러대의 컴퓨터,네트워크 기기 중계 -> 상대방 도착
- 중계하는 동안 다음으로 중계할 곳의 MAC 주소를 사용하여 목적지를 찾아가는 것
-> 이때 ARP(Address Resolution Protocol) 이라는 프로토콜이 사용된다.
- ARP는 주소를 해결하기 위한 프로토콜으로 수신지의 IP주소를 바탕으로 MAC 주소를 조사함 - 중계를 하는 도중 컴퓨터와 라우터등 네트워크 기기는 목적지에 도착하기까지 대략적인 목적지만을 알고있다.
-> 이러한 시스템을 라우팅 이라고 함
◆TCP(Transfer Control Protocol) - 신뢰성
- 트랜스포트 층
- 신뢰성 있는 // 바이트 스트림 서비스 제공
-> 상대방에게 보내는 서비스
// 용량이 큰 데이터를 보내기 쉽게 TCP 세그먼트라 불리는 단위 패킷으로 작게 분해하여 관리하는 것 - 즉 대용량의 데이터를 보내기 쉽게 작게 분해하여 상대에게 보내고, 정확하게 도착했는지 확인하는 역할을 담당함
->그러기 위해 3-way handshaking 이라는 방법을 사용함
- 패킷을 보내고 바로 끝내는 것이 아니라 보내졌는지 여부를 상대에게 확인하러 가는 것 이다.
이것은 SYN와 ACK라는 TCP 플래그를 사용한다.
- 1. 송신측에서 최초 SYN 플래그로 상대에게 접속함과 동시에 패킷을 보내고
2. 수신측에서 SYN/ACK 플래그로 송신측에 접속함과 동시에 패킷을 수신한 사실을 전한다.
3. 송신측이 ACK 플래그를 보내 패킷 교환이 완료되었음을 전한다.
- 이 과정에서 어디선가 통신이 끊어지면 TCP는 그와 동시에 같은 수순으로 패킷을 재전송함
◆DNS(Domain Names System) - 이름 해결
- HTTP와 같이 응용 계층에서 도메인 이름과 IP주소 이름 확인을 제공함
1. 송신->DNS: 웹페이지(www.aa.com)에 접속하고 싶으니 IP주소를 알려줘.
2. DNS -> 송신: 웹페이지(www.aa.com)의 주소는 223.444.555.666 야
3. 송신 -> 웹페이지 : IP주소는 223.444.555.666야
◆정리본
1.7 URI, URL
◆URI(Uniform Resource Identifiers)
URI는 일반적으로 리소스의 위치(URL), 리소스의 이름(URN), 또는 둘 모두를 포함
▷Uniform
- Uniformity(통일)된 서식 결정
- 여러 가지 종류의 리소스 지정 방법을 같은 맥락에서 구별없이 취급할 수 있게 함
- 새로운 스키마(http:, ftp 등) 도입을 용이하게 함
▷Resource
- 식별 가능한 모든 것 (파일, 이미지, 서비스 등)
▷Identifiers
- 식별 가능한 것을 참조하는 오브젝트
- 스키마(리소스를 얻기 위한 수단에 이름을 붙임)
- 스키마를 나타내는 리소스를 식별하기 위한 식별자
ex) HTTP : http , ftp, telnet, file - 리소스를 식별하기위해 문자열 전반을 나타낸다 // URL은 리소스의 장소(네트워크 상의 위치)를 나타냄
◆URL(Uniform Resource Locator)
▷스키마
- 스키마(http:)를 사용 -> 리소스를 얻기위해 사용하는 프로토콜 지시함
▷자격정보(옵션)
- 서버로부터 리소스를 취득하려면 자격정보(크리덴셜)가 필요함
- 유저명, 패스워드 지정
▷서버 주소
- DNS, IPv4/6 지정
▷서버포트(옵션)
- 네트워크 포트
▷계층적 파일 패스
- 서버 상의 파일 경로
▷쿼리 문자열(옵션)
- 파일 경로에 지정된 리소스에 임의의 파라미터를 넘겨주기 위해 쿼리 문자열을 사용
▷프래그멘트 식별자(옵션)
- 서브 리소스(도큐먼트 중간 위치) 가리키기 위해 사용
◆URI(Uniform Resource Identifier)와 URL(Uniform Resource Locator)은 관련된 개념이지만 약간의 차이가 있습니다.
URI는 인터넷 상에서 고유한 리소스를 식별하기 위한 일반적인 형식입니다. URI는 리소스를 고유하게 식별하기 위한 문자열로, URL과 URN의 개념을 포함합니다.
URL은 URI의 하위 집합으로, 리소스의 위치를 지정하기 위한 형식입니다. URL은 프로토콜, 호스트명, 경로 등을 포함하여 리소스의 실제 위치를 명시합니다. 예를 들어, "http://www.example.com/index.html"은 HTTP 프로토콜을 사용하는 URL입니다.
URN은 URI의 다른 하위 집합으로, 리소스의 이름을 지정하기 위한 형식입니다. URN은 리소스의 고유한 이름을 나타내는 문자열입니다. 예를 들어, "urn:isbn:123456789"은 ISBN 번호를 사용하는 URN입니다.
요약하자면, URI는 인터넷 상에서 리소스를 식별하기 위한 일반적인 형식이며, URL은 리소스의 위치를 지정하기 위한 구체적인 형식입니다. URL은 URI의 하위 집합이며, URN은 리소스의 이름을 지정하기 위한 또 다른 하위 집합입니다.
참고: https://aws-hyoh.tistory.com/entry/TCPIP-%EC%89%BD%EA%B2%8C%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0
'INFRA > NETWORK' 카테고리의 다른 글
Network - TCP 3 way handshake & 4 way handshake (0) | 2023.09.13 |
---|---|
Network - OSI 7계층 (0) | 2023.09.13 |
4.결과를 전달하는 HTTP 상태코드 (0) | 2023.08.25 |
2.간단한 프로토콜 HTTP (0) | 2023.08.25 |
Cookie & Session (0) | 2023.08.24 |