* 해당 게시물은 Youtube Channel "따라하면서 배우는 IT", 네트워크 기초(개정판)의 강의를 보고 작성되었음을 미리 알려드립니다. (개인적으로 공부를 정리한 글입니다. )
* 개인적인 평가로, Network 강의 중 bible이라 생각할 정도로 강의 질이 좋습니다. Network에 대해 공부가 필요하시다면 꼭 한번 시청해보시는 걸 추천 드립니다.
> 따라하면서 배우는 IT Youtube Channel.
https://www.youtube.com/channel/UCl9zTDOvOxdCfUt1HqVwwdg
따라하면서 배우는 IT
어렵게 느껴질 수 있는 IT기술들을 하나하나 따라하면서 학습할 수 있는 곳입니다. www.ddarahakit.kro.kr 에 가시면 동영상 내용에 해당하는 설명도 함께 보실 수 있어요.
www.youtube.com
> 따라學 IT Blog
https://ddarahakit.tistory.com/
따라하면서 배우는 IT
어렵게 느껴질 수 있는 IT 기술들을 최대한 쉽게 따라하면서 학습할 수 있는 블로그
ddarahakit.tistory.com
*해당 블로그에서 추가 설명 및 강의에 쓰인 PPT 자료를 받으실 수 있습니다
이 부분을 쉽게 풀이하자면 Server-Client 개념이다.
>> 4계층에서 하는 일
전송 계층(Transport Layer)은 송신자의 프로세스와 수신자의 프로세스를 연결하는 통신 서비스를 제공한다.
전송 계층은 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어, 그리고 다중화와 같은 편리한 서비스를 제공한다.
대표적인 Protocol은 TCP(연결 지향 전송 방식)/UDP가 있다.
>> 포트 번호
특정 프로그램이 사용하는 것. 특정 프로세스와 특정 프로세스가 통신을 하기 위해 사용한다.
하나의 포트는 하나의 프로세스만 사용 가능하며, 하나의 프로세스가 여러 개의 포트를 사용하는 것도 가능하다.
프로그램이 할당받는 포트번호는 일반적으로 정해져 있지만 반드시 따라야할 필수 조건은 아니다.
ex) 80번 Port는 대표적인 Http를 위한 Port지만 내 입맛대로 다른 번호를 사용하여 Http Service를 실행 시켜도 된다.
만약 Https Server에 웹 브라우저가 접속하면, 상대측 443번과 임의의 Port(운영체제가 할당해주는)와 연결되어 통신된다.
2계층, 3계층, 4계층 모두를 사용해야 통신이 가능하다.
>> UDP Protocol
UDP(User Datagram Protocol or Universal Datagram Protocol)의 전송 방식은 매우 단순해서 신뢰성이 낮고, 데이터 그램의 순서가 바뀌거나 중복되거나, 심지어 통보 없이 누락되기도 한다.
UDP는 일반적으로 오류의 검사와 수정이 필요 없는 프로그램에서 수행할 것으로 가정한다.
Source Port > 출발지의 Port (1~65535 - 2byte 표현 정수)
Length > Payload와 UDP까지 포함한 길이.
Checksum > 데이터의 유효성 검사
>> UDP 프로토콜을 사용하는 대표적인 프로그램
- DNS 서버 (도메인에 대한 IP를 알려주는 서버)
-tftp 서버 (파일전송 프로그램)
>> TCP 프로토콜
전송 제어 프로토콜(Transmission Control Protocol, TCP) 은 프로그램 간에 통신을 안정적으로, 순서대로, Errorless 하게 교환 할 수 있게 한다.
Sequence Number (4 byte)>
Acknowledgment Number (4 byte) >
Offset > Header의 길이를 의미한다. ( IPv4에서 Length는 4로 나눈 값인데, 이곳 또한 4로 나눈 값이다.)
Reserved > 예약어이고, 사용되진 않는다.
TCP Flags(8bit = 1byte) > TCP의 주된 기능이 여기서 결정된다.
C : X
E : X
U (URG): Urgent Flag - 우선 순위가 높은 Packet이다. (다른 Packet보다 먼저 처리를 요구한다.
A (ACK): Acknowledgement Flag - 연결에 대한 승인에 대한 정보를 포함
P (PSH) : Push Flag - TCP buffer가 일정한 크기만큼 쌓여야 패킷을 추가 전송하지만, 이를 생략하고 계속 데이터를 전송하게끔 하는 값.
R (RST) : Reset Flag - 초기화 bit, 데이터 통신에 문제가 발생했으니, 서로의 연결을 초기화 하겠다는 값.
S (SYN) : Synchronization Flag - Sequence 번호를 동기화 하고 연결 수립을 요청하겠다는 패킷. (연결을 시작할 때 반드시 사용하는 Flag)
F (FIN) : Finish Flag - 연결을 종료하겠다는 값.
Window > 얼마만큼 더 보내야하는지 알려주는 값 ( 매 남아 있는 TCP 공간이 얼마만큼 남았는지 알려준다. )
Checksum > 헤더의 오류를 확인하기 위한 값
Urgent Pointer > Urgent Flag와 Set이다. 어디가 긴급 데이터인지를 가리키는 곳
TCP 또한 IPv4 처럼 4byte씩 증가하며 Option이 붙을 수 있고, 최대 10개까지 가능하다. 최대 60 Byte.
>> TCP를 이용한 통신과정
1) 클라이언트가 서버에게 요청 패킷을 보냄.
2) 서버가 클라이언트의 요청을 받아들이는 패킷을 보냄.
3) 클라이언트는 이를 최종적으로 수락하는 패킷을 보냄.
위 3개의 과정을 3Way Handshake라 부른다.
>> 연결 수립 과정 (TCP 3Way Handshake) 2x3 Table
![]() |
![]() |
![]() |
![]() |
![]() |
![]() 이런 과정을 3-Way handshake라 부른다. (Flag가 Setting 되어 패킷을 주고 받음) |
>> SEQ, ACK 번호의 변화 규칙
TCP를 이용한 데이터 통신을 할 때 단순히 TCP 패킷만을 캡슐화해서 통신하는 것이 아닌 페이로드를 포함한 패킷을 주고 받을 때의 일정한 규칙
1. 보낸 쪽에서 또 보낼 때는 SEQ번호와 ACK번호가 그대로다.
2. 받는 쪽에서 SEQ번호를 받은 ACK번호가 된다.
3. 받는 쪽에서 ACK 번호는 받은 SEQ번호 + 데이터의 크기.
>> TCP 연결 상태의 변화.
>> 중요 상태
LISTEN - Server의 응답 대기 상태 (항상 듣고 있음)
ESTABLISHED - 연결이 서로 수립이 된 상태.
Client가 Port를 사용할 때 Active open 이라 한다. 능동적인 Open은 Client, 수동적인 Open은 Server.(서버는 고정되어 계속 열려 있음)
클라이언트는 능동적으로 Port를 열어서 SYN를 전송하여 SYN_SEND 상태가 된다.
SYN를 받은 서버는 SYN_RCVD 상태가 되고, SYN,ACK Packet을 보내게 된다.
CLIENT : PACKET을 보내고 SYN_SENT 상태가 된다.
SERVER : PACKET을 받고 SYN_RECEIVED 상태가 된다.
CLIENT : PACKET을 받고 ACK PACKET을 보내고 ESTABLISHED 상태가 된다.
SERVER : CLIENT의 ACK PACKET을 받고, ESTABLISHED 상태가 된다.
>> 포트 포워딩
Port mapping 이라고도 하고, 패킷이 라우터나 방화벽과 같은 네트워크 장비를 가로지를 동안 특정 IP 주소와 Port 번호의 통신 요청을 특정 다른 IP와 Port 번호로 넘겨주는 네트워크 주소 변환(NAT)의 응용이다.
이 기법은 Gateway의 반대쪽에 위치한 사설 네트워크에 상주하는 호스트에 대한 서비스를 생성하기 위해 흔히 사용된다.
'Computing > Network' 카테고리의 다른 글
03_ 3계층(2) IPv4, ICMP (0) | 2021.11.12 |
---|---|
02_ 2계층 Ethernet, 3계층(1) ARP (0) | 2021.11.11 |
01_ 네트워크 기초 (0) | 2021.11.11 |