hchang 17 Nov 2021
목차
1. TCP/IP
2. [API]
인터넷(Internet)은 한마디로 표현하면, 컴퓨터들 사이의 TCP/IP(Transmission Control Protocol / Internet Protocol)이라는 통신 프로토콜을 이용해 정보를 주고받는 컴퓨터 네트워크로 정의됩니다.
1960~70년대 미국 국방부 산하의 고등 연구국(Advanced Research Projects Agency, ARPA)의 연구용 네트워크가 시초입니다. 동서냉전이 한창이던 이때, 미국 국방부 고등 연구국에서는 핵전쟁 등의 상황에서도 살아남을 수 있는 네트워크를 연구하였고 최초의 2노드 간의 상호 연결은 1969년 10월 29일 UCLA와 SRI 연구소 간에 이뤄졌습니다. 이 통신망을 아파넷(ARPANET)이라고 하였으며 현재의 인터넷망의 시초입니다. 초기에 연구목적이 컸기때문에, 참여를 희망하는 기관이 늘어나고, 이에따라, 군사용을 밀넷(MILNET)으로 분리시키고 아파넷은 민간 네트워크가 되었습니다. 사용자가 많아지면서 점차 internetwork의 약어였던 internet이 고유명사로 인정받기 시작했습니다.
인터넷은 해저 케이블로 전세게와 연결되어 있습니다. 실제로 인터넷에 연결되어있는 전 세계의 모든 컴퓨터가 서로 연결되어 있다고 생각할 수 있겠는데요. 하지만 저희가 인터넷을 사용할 때면, 일부 각각의 컴퓨터가 서로 연결되거나, 저희가 직접 일부 특정 서버에 연결하는 느낌이 납니다. 이것이 peer to peer의 관계인데요. 이것을 가능하게 해주는 것이 바로 TCP/IP입니다.
TCP/IP 기반으로 구동되는 많은 Application 프로토콜이 있습니다. 이들 대부분은 우리가 알게 모르게 이미 친숙하게 사용하고 있는 것들입니다.
소켓(socket): 보통 삽입형 이음새를 뜻하는 단어로 여기서는 렌선을 꽃는 포트
TCP: Transport 레이어에서 어플리케이션 간의 통신 채널을 생성하고 패킷으로 쪼개진 데이터의 정확한 전송 흐름을 관리한다. 하나의 컴퓨터에 여러개의 어플리케이션이 구동되고 있다면 각각 다른 포트 번호의 소켓을 가지고 있게 되는데, 패킷 데이터가 누락되거나 순서가 바뀌는 일 없이, 이 포트 번호를 기준으로 타겟 어플리케이션 소켓으로 정확히 전송될 수 있도록 데이터 흐름을 책임지는 것이 TCP의 역할이다.
IP: 패킷이 전달되어야 할 주소(IP주소)를 정의하고, 이 주소 체계에 따라 목적지로 패킷들을 전송하기 위해 거쳐야 할 다음 라우팅 경로를 결정할 수 있게 한다. 패킷의 목적지가 되는 컴퓨터(호스트)는 저마다의 IP 주소를 할당받는다. IP는 타겟 주소로 데이터가 정확히 전송되는 것을 책임지는 역할을 하는 프로토콜이다.
HTTP: HyperText Transfer Protocol HTTPS: HyperText Transfer Protocol Secure FTP: File Transfer Protocol SSH: Secure Shell (암호화된 네트워크 프로토콜) DNS: Domain Name System
정말 TCP/IP는 인터넷에서 정보를 교환할 때 어떻게 해야 되는지에 대한 모든 것의 근본이 됩니다. 지구상에 있는 어떤 인터넷 서비스도 IP주소와 포트번호, Application 프로토콜 규격만 알면 모두 접속해서 통신이 가능한 것입니다.
TCP/IP 기반으로 구동된다는 것은 IP주소와 포트번호를 가지고 통신한다는 뜻과 같은 의미입니다. 아래 표는 위에서 소개한 TCP/IP 기반 프로토콜들이 관례적으로 사용하는 포트번호입니다.
(1) Web과 HTTP API가 무엇인지 공부하기에 앞서 Web에 대해 먼저 알아봅시다.
Web 웹은 1989년 스위스의 입자 물리 연구소의 소프트웨어 공학자인 팀 버너스리에 의해 처음 그 개념이 고안되었습니다.
팀 버너스리는 이렇게 제안했죠, 인터넷에서 정보를 교환할 때 정보들을 하이퍼텍스트로 연결하자! 따라서 웹의 문서와 프로토콜 그리고 식별 규칙은 다음과 같습니다.
표현형식(문서) | HTML(Hyper Text Markup Language) |
전송방법(프로토콜) | HTTP (Hyper Text Transfer Protocol) |
식별자 | URI (Uniform Resource Identifier) |
HTTP의 메시지는 request/status line과 header 그리고 body로 이루어져 있는데요, 요청 내용을 담은 request line은 요청 메소드와 타겟주소를 포함합니다.
GET: read, 정보를 요청
HEAD: 헤더 정보만 요청
POST: create, 정보를 생성, 변형 할 때 사용
PUT: update, 정보를 수정
DELETE: delete, 정보를 삭제
OPTIONS : 사용 가능한 메소드 확인
응답 메시지는 status line에 상태코드(status code)를 포함해요.
Response Code (응답 코드)
1xx: 조건부 응답
2xx: 성공
3xx: 리다이렉션 완료
4xx: 요청 오류(클라이언트에 문제가 있다는 뜻!)
5xx: 서버 오류(서버에 문제가 있다는 뜻!)
많이 사용하는 응답 코드
200: 서버가 클라이언트 요청을 성공적으로 처리, 웹 페이지에서는 페이지 요청이 정상적으로 완료되면 반환
404: 찾을 수 없음. 존재하지 않는 URL을 요청하여 페이지를 접속할 수 없을 때 반환하는 응답 코드.