HTTP
HTTP
HTTP 소개 - 생활코딩
HTTP 개요
Hyper Text Transfer Protocol
프로토콜
통신할 때 꼭 지켜야 하는 약속, 프로토콜
프로토콜(Protocol)? 그래서 그게 뭔데?
컴퓨터나 네트워크 장비가 서로 통신을 위해 정해놓은 약속
컴퓨터는 두개의 개체가 같은 프로토콜을 사용하여 통신을 수행해야 정상적인 통신이 발생한다. 데이터가 어떤 과정을 통해서 송신했는지, 수신측에서는 어떻게 원래의 데이터로 복구할 수 있는지와 같은 약속도 포함한다.
- 프로토콜의 구성요소
- Syntax 구문(데이터 구성에 대한 형식, 코딩방법, 신호 레벨 등) : 데이터의 포맷을 정하는 것
- Semantic 의미(데이터 제어, 처리방법, 에러 처리) : 데이터가 무엇을 뜻하는지, 제어 정보, 오류를 방지하기 위한 정보
- Timing 순서: 데이터를 주고 받는 속도 조절, 데이터 통신 순서 관리 등
- 프로토콜의 기능
- 주소설정, 순서제어, 분할 및 재조립, 캡슐화, 연결제어, 오류제어, 동기화, 멀티플렉싱, 전송서비스
- Fragmentation(단편화): 데이터가 패킷단위로 나누어서 전송되는 것
- 속도가 빠르고, 통신 중 발생하는 오류를 효과적으로 제어할 수 있다.
- Reassembly(재조합) : 데이터를 받는쪽에서 작게 나눠진 패킷을 모아서 원래 데이터로 복원하는 작업
- 재조합 과정에서 오류나 손실이 발생하면 오류제어를 통해 알 수 있다.
- sequence control(순서 제어) : 패킷에 순서대로 번호를 매기는 것
- Flow control(흐름제어) : 데이터를 보내는 속도나 양을 정하는 것
- Synchronization (동기화) : 동기화를 통해 양쪽의 초기화상태, 전송상태, 종료상태를 정확히 같은 상태로 만든다.
- Encapsulation (캡슐화) : 데이터는 전송되기 위해 많은 계층을 거친다. 계층을 통과하려면 각 층마다 정보가 추가된다.
TCP/IP
[OSI 참조모델과 TCP/IP 기초] #1 TCP/IP란?
네트워크 프로그래밍 : TCP/IP 개론
인터넷 세계에서 표준으로 사용되고 있는 네트워크 프로토콜
컴퓨터간의 지역네트워크(LAN) 혹은 광역네트워크(WAN)에서 원활한 통신을 위한 통신규약(Protocol)
HTTP는 TCP/IP를 기반으로 작동한다.
- IP (Internet Protocol)
- 컴퓨터 간(node(단말기)간)의 데이터를 주고받기위해 주소를 필요로한다.
- IP는 4바이트로 이루어진 주소번호를 사용하여 각각의 node를 구분하고, 목적지를 찾아가게 된다.
- 숫자로 된 IP주소를 식별하기 쉽게 변환한 것이 Domain Name 이다. (211.234.109.2 → www.yahoo.co.kr)
- TCP(Transmission(전송, 송신) Control Protocol)
- 서버와 클라이언트 간에 데이터를 신뢰성 있게 전달하기 위해 생긴 프로토콜
- 데이터는 네트워크 선로를 통해 전달되는 과정에서 손실되거나 변형되어 전달될 수 있는다.
- TCP는 손실을 찾아내서 교정하고, 순서를 재조합 하게 해준다.
- 연결지향 프로토콜
OSI 7 Layer란?
OSI 7 Layer & TCP/IP
통신이 일어나는 과정을 7개의 단계로 나누어 놓은것
송신 호스트가 데이터를 보낼때 각 계층을 지나면서 헤더가 붙어 패킷의 크기가 커지고 수신호스트에 도착하면 아래에서 위에 있는 계층으로 올라가며 디 캡슐화 과정에 의해 헤더가 벗겨진다.
- 이렇게 나누어 놓은 이유?
- 데이터 흐름이 한눈에 보인다.
- 문제 해결이 편리하다. 네트워크 상에서 문제가 발생하명 7개의 작은 문제로 나눈 다음 문제를 해결하면 쉽게 해결 가능
- 계층을 나누어 표준화를 해놓으면 어러 회사 장비를 써도 네트워크에 이상이 없다.
- OSI 7계층과 TCP/IP 4계층에 대한 비교
각 계층이 프로토콜이고, TCP/IP는 서로 다른 시스템을 가진 컴퓨터들을 서로 연결하고, 데이터를 전송하는데 사용하는 통신 프로토콜들의 집합이다.
각각의 네트워크에 접속되는 호스트들은 고유의 주소를 갖고 있어서 자신이 속해있는 네트워크 뿐만 아니라 다른 네트워크에 연결되어있는 호스트까지도 서로 데이터를 주고받을 수 있다.
우테코 OSI 7 Layer
[10분 테코톡] 🔮 히히의 OSI 7 Layer
1. Physical Layer
- 0과 1의 나열을 아날로그 신호로 바꾸어 전선으로 흘려보내고 (encoding)
- 아날로그의 신호가 들어오면 0과 1의 나열로 해석하여 (decoding)
- 물리적으로 연결된 두대의 컴퓨터가 0과 1의 나열을 주고 받을 수 있게 해주는 모듈
Pysical Layer 기술은 어디에 구현되어 있을까?
- PHY칩에 구현되어 있다.
- 1계층 모듈은 하드웨어적으로 구현되어있다. (인코더, 디코더가 회로로 이루어짐)
여러대의 컴퓨터가 통신하려면?
- 스위치 : 네트워크 단위들을 연결하는 통신 장비
- 하나의 네트워크란 하나의 스위치로 여러 컴퓨터들이 연결되어 있는 것 (인트라넷)
- 라우터 : 스위치와 스위치를 연결해서 서로 다른 네트워크에 속한 컴퓨터끼리 통신이 가능하게 해주는 장비
- 라우터와 라우터끼리 연결해서 전세계의 컴퓨터를 연결한 것이 인터넷이다.
2. Data-link Layer란?
- 같은 네트워크에 있는(스위치 하나로 연결되어 있음) 여러대의 컴퓨터들이 데이터를 주고 받기 위해서 필요한 모듈
- Framing : Data-link Layer에 속하는 작업들 중 하나
- 여러 발송지로부터 전달받은 데이터를 올바르게 읽기 위해서 송신자가 데이터의 앞뒤에 특정한 비트열을 붙인 것
Data-link Layer기술은 어디에 구현되어 있을까?
3. Network Layer
- IP 주소 : 각 컴퓨터들이 갖는 고유한 주소
- 우리가 주소창에 도메인을 입력하면 IP주소로 변환되어 사용된다. (DNS 추가학습하기)
- 상대방의 IP주소를 알고 있어야 메시지를 보낼 수 있다.
Network Layer란?
- 수많은 네트워크의 연결로 이루어지는 inter-network속에서
- 어딘가에 있는 목적지 컴퓨터로 데이터를 전송하기 위해
- IP주소를 이용해서 길을 찾고(routing)
- 자신 다음의 라우터에게 데이터를 넘겨주는 것(forwarding)
Nextwork Layer 기술은 어디에 구현되어 있나?
- 운영체제의 커널에 소프트웨어적으로 구현되어 있다.
4. Transport Layer
포트(Port)
- 어떤 데이터를 무슨 프로세스에게 주어야할지 컴퓨터가 알 수 있는 방법
- 데이터를 받고자 하는 프로세스들은 포트 번호(port number)를 가져야한다.
- 포트 번호 : 하나의 컴퓨터에서 동시에 실행되고 있는 프로세스들이 서로 겹치지 않게 가져야하는 번호
- 송신자는 데이터를 보낼 때 데이터를 받을 수신자 컴퓨터에 있는 프로세스의 포트 번호를 붙여서 보낸다.
Transport Layer란?
- 포트 번호를 사용하여
- 도착지 컴퓨터의 최종 도착지인 프로세스까지
- 데이터가 도달하게 하는 모듈
Transport Layer 기술은 어디에 구현되어 있나?
- 운영체제의 커널에 소프트웨어적으로 구현되어 있음
5. Application Layer
-
TCP/IP 소켓 프로그래밍 (혹은 네트워크 프로그래밍)
: 운영체제의 Transport Layer에서 제공하는 API를 활용해서 통신 가능한 프로그램을 만드는 것
-
소켓 프로그래밍 만으로도 클라이언트, 서버 프로그램을 따로 만들어서 동작시킬 수 있다.
-
TCP/IP 소켓 프로그래밍을 통해서 누구나 자신만의 Application layer 인코더와 디코더를 만들 수 있다.
→ 누구나 자신만의 Application Layer 프로토콜을 만들어서 사용할 수 있다.
마무리
- 네트워크 시스템은 하나의 커다란 소프트웨어라고 할 수 있다.
- OSI Layer 모델은 거대한 네트워크 소프트웨어의 구조를 설명하는 것
오늘 한 일
- HTTP와 TCP/IP에 대해 학습하는데 프로토콜의 의미도 몰라서 프로토콜도 학습했다.
- Layer라는 개념이 이해가 안갔는데 우테코 영상을 보니 이해간다. 내일 더 자세히 학습해봐야겠다.
Todo
- 웹 개발을 공부할 때는 HTTP 지식이 중요한 것 같아서 인프런 강의를 수강해야겠다.
- (내일) 각 계층에 해당되는 프로토콜이 무엇인지 학습, 자바의 정석 네트워크 챕터
연도 파이로 선생님과 함께하고 계시군요😂 저도 지난 주에 설명 들으면서 혼자 이해 안되는 부분들이 엄청 많았는데 계속 질문드렸더니 친절하게 더 쉬운 언어로 설명해 주셨어요!ㅎㅎ 용기내어 파이로 선생님을 스탑하고 질문해보셔요😎😆