비전공자의 전공자 따라잡기 - 네트워크, HTTP

전송 계층(L4, Transport)

전송 계층

포트(port) : 80 443 22 53 SMTP …
포트는 주소 뒤에 붙어있는 것이고, 어떤 프로그램한테 데이터를 전송할지 정하는 것이 포트다.
예시 : 15.163.24.8 : 80 » 여기서 80이 포트다.
80이니까 HTTP서버가 처리하는 데이터구나, 443이니까 HTTPS서버구나를 알 수 있다.
(어떤 프로그램이 이 데이터를 처리할 수 있는지)

포트 구분

포트는 0~1023까지의 1024기준의 포트가 있고, 0~63335까지의 포트도 있다.
보통 알아야할 것은 0~1023 잘 알려진 포트(well known Port)다.
어떤 프로그램이 데이터를 처리해야 하는지도 있고, 전송데이터에 오류가 있는지 확인하는 것도 있다.

TCP와 UDP

위 계층에서 다른 데이터가 붙어서 정보를 추가하고 그것들이 전기신호로 바뀐다는 것만 알아두자.

전송계층은 세그먼트라고 하는데 ‘헤더 + 데이터’로 구성된다.
예시 : TCP헤더 + 데이터(세션계층) / UDP헤더(데이터그램) + 데이터(세션계층)
프로토콜에서 TCP/UDP가 있는데 TCP는 ‘3 way handshake’를 사용해서 데이터 순서나 데이터를 받았는지 확인, 연결을 맺었는지 확인한다.
그렇기 때문에 TCP는 UDP보다 용량이 크다.
UDP는 데이터가 연결이 됐는지 확인을 하지 않고 데이터가 전송이 된다. 그렇기 때문에 전송 되지 않은 데이터가 있을 수 있다.
동영상이나 사진을 보낼 때 사용하는데 픽셀이 몇개 없어져도 모르기때문에 빠르게 전송을 할 때에는 사용한다.


응용 계층(L7, Application)

세션, 표현, 응용 계층 - HTTP

HTTP데이터는 ‘헤더(Header)+ 본문(Body)’로 구성된다.
헤더는 요청과 응답으로 나누어져 있다.
포트는 전송계층이지만 어떤 프로그램을 어디서 처리할지 나누는 것(어떤 프로그램과 매칭되는 것인지)은 세표응계층이다.

응용 프로그램 계층

세션(자물쇠) : HTTPS(SSL/TLS)
표현(확장자) : UTF- 8, ASCII, JPG, PNG
응용(헤더+본문) : HTTP


OSI 총정리

데이터가 HTTP라면?

데이터를 보내는 쪽 : 응용 쪽에서 데이터를 보내려 한다.
표현에서 HTML 등으로 표현을 하고 세션에서 HTTPS 암호화를 해준다.
TCP헤더에서 데이터 확인을 하고 전송을 해준다.
네트워크에서 IP주소를 찾고, 데이터링크에서 MAC주소를 찾는다.
마지막으로 물리계층인 전기신호로 변환을 해준다.

데이터를 받는 쪽 : 전기신호로 데이터를 받고 프레임으로 변환을 해준다.
기계가 필요없는 것을 제외하고 HTTPS 암호를 복호화해준다.
마지막 응용 프로그램에서 데이터를 받게 된다.

‘물 - 데 - 네 - 전 - 세 - 표 - 응’으로 앞자리만 따서 외우기도 하지만 완벽하게 외울 필요까지는 없다.
웹 개발이나 앱 개발 쪽 사람이라면 응용이 중요하고, 다른 것들은 그 뒤의 단계에서는 기계가 알아서 해주기 때문에 교양으로 알아두자.
알아야 할 것은 ‘HTTP, port, TCP/UDP, IP’다.


데이터 전체 흐름 - 총 복습

데이터 흐름 / 내 컴퓨터 » Naver에게 데이터 전송 전체 과정

출발지 MAC, 출발지IP, 출발지port는 내 컴퓨터라서 알고 있다.
목적지의 MAC, IP, port를 알아야하는데, 일단 port는 HTTPS니까 443, IP는 DNS를 통해 알고 있다.
목적지 MAC주소를 모르기때문에 데이터를 보낼 때는 내 MAC주소의 데이터를 라우터에서 보낸다.
그렇게 되면 먼저 데이터가 내 라우터로 가게 된다.
그렇게 되면 IP와 port, HTTP요청과 트레일러가 남는다.
이제 내 라우터는 Naver의 MAC주소를 알게 되고 출발지 MAC은 내 라우터, 목적지 MAC은 Naver라우터가 된다.
(라우팅테이블을 통해서 IP를 알아낸 것)
목적지MAC주소를 알아낸 상태에서 Naver라우터에 데이터를 전송하면 출발지는 Naver라우터, 목적지는 Naver서버컴퓨터로 보내게 된다.
마지막으로 HTTP요청을 받고 응답용 HTTP메시지를 작성한 후 반대로 전달되어 내 컴퓨터로 전달된다.

내 라우터는 어떻게 Naver IP의 주소를 알고 있을까?

라우터는 라우팅테이블(라우터가 사용하는 데이터베이스)이라는 것을 통해 Naver IP를 찾아서 알 수 있다.
아직 배우지 않았지만, DNS라는 것을 통해서 우리의 브라우저는 Naver의 IP를 알고 있다.
(자세한 내용은 다음에)