TCP / IP
인터넷에 사용되는 각종 표준 프로토콜의 집합
네트워크
컴퓨터들이 서로 정보(데이터)를 주고 받을 수 있도록 연결된 통신망
TCP/IP 4계층
택배를 부치는 것에 비유할 수 있습니다. 프로토콜 오른쪽에 명시하였습니다. 프로토콜마다 헤더가 존재하며 애플리케이션 → 트랜스포트 → 인터넷 → 네트워크 헤더가 붙어 보내어졌다면 받는 쪽에서는 이 역순으로 헤더를 받아 해석하게 됩니다.
- 물건을 보낸다(애플리케이션 계층) : HTTP, SMTP, DNS
- 포장한다(트랜스포트 계층) : TCP, UDP
- 송장을 붙인다(인터넷 계층) : IP
- 부친다(네트워크 인터페이스 계층) : Ethernet
계층으로 왜 나누는 것일까(Layered Architecture)?
- 역할로 분할되어 있으면 좋은 점은 예를들어 한 계층의 기술이 발전한다고 했을 때 다른 계층은 수정할 필요없이 해당 계층만 바꾸면 된다는 것입니다.
- 즉, 계층별로 의존하지 않고 독립적으로 행동할 수 있다는 것입니다.
- 복잡도를 줄일 수 있다는 점에서 소프트웨어 내에서도 많이 쓰는 개념입니다.
- 4G, 5G 관련된 부분은 네트워크 인터페이스 계층입니다.
애플리케이션 계층
- data는 Header + Body입니다. Body만 data인 것은 아닙니다.
트랜스포트 계층
수신지의 애플리케이션에 데이터를 전달하는 역할
포트번호 지정, 데이터 분할
실제 연결을 보면 같은 서버에 여러 요청이 있는데 그 이유는 브라우저의 쓰레드가 여러 요청을 동시에 보내기 때문입니다.
- 하나하나 연결을 소켓이라고 합니다.
- 소켓 식별자 : 클라이언트 아이디, 클라이언트 포트, 서버 아이디, 클라이언트 포트
포트번호는 해당 IP의 애플리케이션들을 구분하기 위함입니다. Random 으로 할당하면 '다이나믹 포트'라고 합니다. 80번 포트처럼 흔히 쓰이는 포트를 '웹노운 포트'라고 합니다.
- HTTP(80), HTTPS(443), FTP(21), SSH(22), Telnet(23)
트랜스포트 계층의 헤더까지 쌓인 뭉치를 '세그먼트' 라고 합니다.
TCP, UDP의 구분은 면접에도 자주 등장하는 중요한 개념입니다!!
TCP
데이터를 정확하게 전달하기 위한 신뢰성 있는 프로토콜 입니다.
전송 속도 조절하고, 재전송(손실됐을 때)도 합니다.
3-way handshake
- SYN : 통신하고 싶어
- SYN/ACK : 응, 나도 통신하고 싶어
- ACK : 응. 보낸다
UDP
- 데이터 전송의 신뢰성보다는 속도가 우선
- 오직 전송만 합니다.
- 데이터 왜곡 현상 발생할 수도 있습니다.
- 그렇기 때문에 헤더도 TCP에 비해 간결합니다.
- 속도가 중요시되는 실시간 스트리밍에 주로 사용됩니다.
인터넷 계층
수신지의 컴퓨터에게 데이터를 전달하는 역할
IP주소 : 네트워크에 연결된 컴퓨터 식별 번호
공유 IP, 사설 IP
- 공인 IP는 하나이지만 공유기에서는 사설 IP를 여러 개를 만들어서 내부에서 사용할 수 있게합니다.
인터넷 계층의 헤더까지 쌓인 뭉치를 '데이터그램', '패킷' 이라고 합니다.
사설 IP를 여러 공유하는 컴퓨터에 뿌려주는 것을 '브로드케스트'라고 합니다.
해당 IP를 가진 MAC주소(컴퓨터)를 알아낼 때는 공유기에서 물어봅니다. "이 IP 가진 컴퓨터가 있나요?" 그러면 그 IP가진 컴퓨터가 공유기에게 신호를 보내 알아냅니다.
네트워크 인터페이스 계층
하드웨어를 제어하고 이와 연결된 다른 기기까지 데이터 전달
이더넷 : 일반 금속 케이블 또는 광 케이블을 통해 데이터 전달
MAC주소 : 네트워크 장비 고유 식별번호(랜카드 주소)
- 수신지의 MAC주소가 아니라 바로 다음 네트워크 도착지의 MAC주소를 의미합니다.
'CS' 카테고리의 다른 글
웹을 지탱하는 기술3 - HTTP (0) | 2019.03.07 |
---|---|
프로세스와 쓰레드 (0) | 2019.02.25 |
프로세서와 코어의 차이점 (2) | 2019.02.08 |
Sync Async Block Non-Block (0) | 2019.01.31 |