티스토리 뷰
성공과 실패를 결정하는 1% 네트워크 원리
라는 책을 읽고 공부한 내용을 정리하며, 크게 소켓 부분과 TCP/IP 4계층으로 나누어 정리했다.
소켓
소켓의 구성요소
- 자신의 IP, 자신의 Port
- 소켓 디스크립터
- 상대방의 IP, 상대방의 Port
소켓
- 소켓은 통신용 제어정보이다.
- 프로토콜 스택(네트워크 제어용 소프트웨어)은 소켓에 기록된 제어정보를 가지고 참조하여 동작한다.
- TCP/IP 에서 각 단계에 따라 동작하는데, 이때 소켓의 제어정보를 참조하는 것
소켓의 작동 4단계
- 소켓을 작성한다.
- 연결(커넥션)한다.
- 데이터를 송수신한다.
- 연결을 끊고 소켓을 말소한다.
1. 소켓의 작성
- 애플리케이션이 소켓 라이브러리를 이용하여 리졸버를 통해 IP 주소를 알아온다.
- 프로토콜 스택에게 소켓작성을 의뢰하면 1개의 소켓을 만들어 디스크립터를 애플리케이션에게 알려준다.
2. 소켓의 연결
- 서버와 클라이언트 간의 파이프를 연결하는 것이다.
- TCP 의 경우
syn, ack, syn+ack
으로 3 handshake를 통해 연결을 확인한다. - UDP 의 경우 연결확인 절차가 없다.
- 데이터를 송수신 하는 구조는 대칭으로 만들면 클라이언트나 서버여부에 상관없이 자유롭게 데이터 송,수신이 가능하다. 하지만 대칭으로 만들 수 없는 부분이 접속동작이다.
서버와 클라이언트의 차이
- 서버는 연결을 대기하는 입장, 클라이언트는 연결을 요청하는 입장이 대다수 이다.
- 서버는 대기소켓을 가지고 있다.
- 클라이언트에서 연결을 요청하면, 서버는 대기소켓을 복제하여 연결에 사용할 소켓을 만든다.
3. 데이터 송수신
- 데이터를 송수신한다.
4. 말소
- TCP 의 경우 4 handshake를 연결을 끊는 동작을 하여 소켓을 말소한다.
TCP/IP 4계층
- 기존 OSI 모델을 7계층으로 나뉘어져 있었다.
- 이중에서 공통된 부분들을 묶어 TCP/IP 프로토콜을 사용하는 모델로 4계층으로 나누었다.
- 각 계층을 지나면서 해당되는 정보가 덧붙는다.
- 캡슐화를 하여 데이터를 전송하고, 받는 곳에는 캡슐화된 정보를 각 계층에서 하나씩 떼어내면서 역캡슐화로 데이터를 수신하게 된다.
- 각 단계를 거치며 데이터가 원하는 곳에 전송될 수 있게 정보가 덧붙게 되고, 그 정보에 맞게 데이터가 보내지게 된다.
- 각 단계를 거칠수록 단계에 해당되는 정보를 가지고 패킷을 구성한다.
계층 | 역할 | 관련 개념 |
---|---|---|
애플리케이션 계층 | 계층 모델 중 트렌스포트 이하에서는 전송을 담당하므로 데이터 전송을 제외한 영역을 애플리케이션 계층 | HTTP, DNS |
트랜스포트 계층 | 애플리케이션 계층에 데이터를 분류하여 전달하는 역할 | TCP, UDP |
인터넷 계층 | 데이터를 수신지 컴퓨터까지 전달하는 역할 | IP |
네트워크 계층 | 네트워크의 하드웨어를 제어하는 역할 | MAC, 이더넷, LAN |
애플리케이션 계층
- 주소창의 프로토콜(https), 웹서버명(www.google.com), 디렉토리명(/index.html) 등으로 url을 해독한다
- request header, request body 등으로 메서지를 구성한다.
- http 를 사용할 경우 규약에 맞는 메소드 등이 포함되어 있다.
- IP 주소를 찾아오기 위해 OS에서 소켓 라이브러리인 DNS 리졸버를 사용한다.
트랜스포트 계층
- 포트번호를 가지고 데이터를 논리적으로 구분한다.
- 유명하게 몇가지 정해진 포트번호가 있다.
포트번호 | 종류 |
---|---|
22 | SSH(TCP) |
80 | HTTP(TCP) |
8080 | tomcat |
443 | HTTPS(HTTP over TLS/SSL) |
- TCP 프로토콜을 사용할지, UDP 프로토콜을 사용할지에 따라 정보가 다르다.
- TCP의 경우 3 handshake를 통해 연결을 확인한다.
인터넷 계층
- IP 주소라는 식별자 정보로 구분한다.
- IP주소에 해당하는 MAC 주소를 ARP를 사용하여 찾는다.
- IP address는 네트워크부와 호스트부로 나뉘며 서브넷마스크로 구분한다.
- IP address는 public address와 private address로 나뉜다.
네트워크 계층
- MAC(Media Access Control) 어드레스는 네트워크 장비에 부여된 식별번호이다. 제조사가 제조 단계부터 붙여 전 세계의 네트워크 장비들이 서로 구분될 수 있게
할당된다. - 네트워크 인터페이스 계층에서는 이더넷 헤드+트레일러 정보를 붙인다. 이것을 프레임이라고 한다. 데이터 정보에서 IP 어드레스는 최종 목적지가 설정되면 변경되지 않으나 MAC
어드레스는 다음 장비의 어드레스로 교체된다. - 이더넷의 기본원리 : 전체에 패킷 신호를 뿌리고 수신처 MAC 주소에 해당하는 기기만 패킷을 수신한다.
- 이더넷의 세가지 성질
- MAC 헤더의 수신처 MAC 주소에 기억된 상대에게 패킷을 전달
- 송신처 MAC 주소로 송신처를 나타낸 후
- 이더타입으로 패킷의 내용물을 나타냄
정리
- 소켓에 저장된 제어정보를 참조하여 전반적인 통신이 이루어진다.
- 소켓과 TCP/IP 각각의 단계들이 어떻게 연결되어 있는지 어려웠는데 그 둘이 서로 연관되어 작동하는 것이었다.
'Computer Science > 네트워크' 카테고리의 다른 글
[TCP/IP] Internet Layer (인터넷 계층) (0) | 2021.08.07 |
---|---|
[TCP/IP] Transport Layer (트랜스포트 계층) (0) | 2021.08.01 |
[스터디] 성공과 실패를 결정하는 1%의 네트워크 원리 (0) | 2021.07.27 |
토큰 인증방식(+ 쿠키와 세션 추가내용) (0) | 2021.03.09 |
쿠키와 세션 (0) | 2021.02.26 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 네트워크
- OS
- 알고리즘
- python
- 학습로그
- DB
- 운영체제
- 개발공부일지
- React
- JPA
- TCP/IP
- javascript
- 우테코수업
- JS
- 우아한테크코스
- 내부코드
- java
- 마스터즈코스
- TIL
- 코드스쿼드
- 회고
- 카카오
- 모의면접준비
- Transaction
- 인증
- 객체지향
- 월간회고
- Spring
- CS
- 글쓰기미션
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함