학부생 시절에 컴퓨터 네트워크 관련 전공 강좌를 들었지만 당시에도 굉장히 어렵게 들었었던 기억이 있기도 하고, 정보처리기사 자격증을 예전에 땄지만 피상적으로 이해한 부분이 많은 것 같다는 생각이 들었습니다.
또한 웹 개발을 하면서 네트워크 관련 지식이 탄탄하지 않으면 놓치는 부분이 많을 것 같아 네트워크 관련된 공부를 집중적으로 수행하기로 목표를 세우게 되었네요.
현재 컴퓨터 네트워크 관련 아주 간단한 기초 서적 정도는 읽은 상태이고-
이후 HTTP 네트워크 관련 전공 지식을 탄탄히 하고자
기초부터 다잡는 마음으로 김영한님의 '모든 개발자를 위한 HTTP 웹 기본지식' 강의를 수강하게 되었습니다.
이 강의를 수강한 이후에 부족한 내용은 서적을 구매하여 심도 있게 공부해나갈 예정입니다!
아래는 강의를 듣고 복습용으로 정리한 내용입니다.
IP
- 지정한 IP 주소에 데이터를 전달하는 역할을 한다.
- 패킷이라는 통신 단위로 데이터 전달
클라이언트단에서 (출발지 ip주소 ex) 100.100.100.1 와 목적지 ip주소 ex) 200.200.200.2) 를 정하고 데이터와 같이 ip패킷을 전송하면 노드들을 거쳐 목적지 서버까지 도달하게 됨.
그러나 이러한 ip 프로토콜의 전송 방식에는 한계가 있다.
예를 들어 해당 목적지 서버가 꺼져 있는 등 패킷을 받을 대상이 서비스 불능 상태거나 없으면 패킷이 전송된다는 점이다. <비연결성>
또한 중간에 패킷이 사라지거나 순서대로 오지 않는다면? <비신뢰성>
같은 IP를 공유하는 프로그램이 2개 이상일때 프로그램을 어떤 식으로 구분할 것 인지? <프로그램 구분>
이러한 문제들을 해결해주는 것이 TCP, UDP이다.
TCP, UDP
인터넷 프로토콜 스택의 4계층은 다음과 같이 구성되어 있다.
(애플리케이션 계층-HFTP,FTP) -> 프로그램이 Hello World 메세지를 생성하면 Socket라이브러리를 통해 전송 계층에 전달한다,
(전송 계층-TCP, UDP) -> TCP 정보 생성하고 해당 데이터를 감싸는 형태로 IP계층에 처리를 요구한다.
(인터넷 계층-IP) -> 전달받은 TCP를 감싸는 형태로 다시 IP 패킷 생성하여 네트워크 인터페이스 계층에 보냄
(네트워크 인터페이스 계층) -> LAN카드를 통해서 전송될때 이더넷 프레임이 포함되어 전송됨
여기서 TCP,UDP는 IP의 한계를 보완해주는 역할을 한다.
TCP세그먼트에는 출발지 포트,목적지 포트 , 전송제어, 순서, 검증 정보가 들어가게 된다.
TCP 특징:
전송 제어 프로토콜(Transmisiion Control Protocol)
- 먼저 연결을 한 뒤에 메세지를 보낸다! ( 수신 서버가 죽어있으면 메세지를 보낼 수 없으니까 일단 연결이 되는지 확인!)
- 데이터 전달 보증
- 순서 보장
- 신뢰할 수 있는 프로토콜
- 현재는 대부분 TCP 사용
TCP 3 way handshake ( 논리적 연결 )
1. (SYN) 클라이언트에서 서버측으로 SYN이라는 메세지를 보냄 (연결해줘!)
2. (SYN+ACK) 서버에서 클라이언트 측으로 SYN 과 ACK 를 보냄 (오 알았어 그럼 나도 연결해줄래?)
3. (ACK) 클라이언트에서 서버측으로 ACK를 보냄( 알았어! )
4. 데이터 전송
UDP 특징:
사용자 데이터그램 프로토콜( User Datagram Protocol)
- 기능이 거의 없고
- 연결 지향
- 데이터 전달을 보장하지 않음
- 순서 보장하지도 않음
- 이런 단점에도 불구하고 단순하고 빠르게 보내야할때 사용 됨
- IP와 거의 같고 port와 체크섬 정도 추가되는 차이이다.
- 애플리케이션에서 추가적인 작업 필요
PORT
- 같은 ip내 실행되는 프로그램이 여러가지 일때, 이러한 다른 목적지 주소를 어떻게 구분할까?!
-> 이를 해결하기 위해 '포트'라는 개념 등장
이러한 출발지, 목적지 port주소는 TCP세그먼트에 기록되어 전송된다!
- 0~ 65535 할당 가능
- 0~1023 : 잘 알려진 포트, 사용하지 않는 것이 좋음
- FTP: 20,21
- TELNET: 23
- HTTP : 80
- HTTPS : 443
DNS
- IP는 변경될 수 있다 . 예를 들어 과거에는 200.200.200.2 였던 IP가 200.200.200.3으로 된다던지!
-> 이는 DNS로 해결 될 수 있다.
DNS
도메인 네임 시스템
- 도메인 명을 IP주소로 변환해줌
전화번호부 같은 개념
ex )
도메인명 IP
google.com - 200.200.200.2
aaa.com - 210.210.210.3
출처 - 김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식 강의를 듣고 정리하였습니다!
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard
복잡한 개념을 아주 쉽게 풀어 설명해주십니다.
'CS > Computer Network' 카테고리의 다른 글
헤더 (0) | 2021.02.26 |
---|---|
HTTP 상태코드 - 1XX, 2XX, 3XX, 4XX, 5XX (0) | 2021.02.25 |
API URI 설계 (0) | 2021.02.24 |
HTTP 특징 (0) | 2021.02.24 |
URI와 웹 브라우저 요청 흐름 (0) | 2021.02.23 |