01. 4계층에서 하는 일 (전송계층)
: 송신자와 수신자의 프로세스를 연결하는 통신 서비스
(1) TCP : 연결 / 데이터 주고 받을 때
(2) UDP : 비연결 / 데이터 던지기
02. 포트번호
: 특정 프로그램이 사용하는 주소
: 하나의 포트는 하나의 프로세스만 사용 가능
: 하나의 프로세스는 여러개의 포트 사용 가능
(1) well-known 포트 : HTTP 80 / HTTPS 443 등
(2) registered 포트 : 오라클 DB 서버 (1521) / MYSQL 서버 (3306) / MS 원격 데스크탑 (3389)
(3) dynamic 포트 :일반 사용자들이 사용하는 포트 (49152 ~ 65535)
03. 프로그램 연결정보
: cmd > "netstat -ano" (연결정보 확인)
* 네이버 실행 후 netstat -ano 확인 : 443은 HTTPS / 12468은 PID (내 pc 구글 크롬)
(PID는 작업관리자에서 확인가능)
04. UDP 프로토콜
(1) 비연결 + 전송방식 단순 & 신뢰성이 낮음
(2) 오류의 검사와 수정이 필요없는 프로그램에서 수행
(3) DNS 서버 (도메인 물으면 IP 주소 알려주는 DNS서버)
(4) tftp 서버 (파일전송 서버) / RIP 프로토콜 (라우팅 정보 공유)
* 파일전송 UDP 프로토콜로 하면 좋을까?
=> 큰 파일을 전송에는 부적합함
=> 동영상 스트리밍 서비스
* TFTP --> OSI 7계층
* 한줄에 16바이트 (총 24바이트 )
* UDP (User Datagram Protocol)
* 출발지 포트(2바이트) / 목적지 포트 (2바이트) / 길이 (2바이트) / checksum (2바이트) = 8 바이트
05. TCP 프로토콜
(1) 연결성 + 안정적으로, 순서대로, 에러없이 통신 가능
* TCP (기본 20바이트 ~ 60바이트)
출발지 포트(2바이트) / 목적지 포트 (2바이트) /
Sequece Number (4바이트)
Acknowledgement Number (4바이트)
Offset ( 헤더의 길이 )
Reserved (예약된 필드 => 사용 안함)
Checksum
Window (연결지향성, 데이터 보내도 되는지 확인할때, 얼마만큼 더 보내?, 사용 공간을 상대방에게 알려줌)
* TCP Flags (1 || 0)
U : Urgent Pointer ( 긴급 bit: 우선순위가 높은 데이터니 먼저 처리해줘)
A : Acknowledgment ( 승인)
P : Push ( TCP 버퍼 상관없이 계속해서 데이터를 넣겠다 : 많이 안씀)
R : Reset ( 초기화 )
S : Syn (동기화 : 연결할때 무조건 사용 ) ⭐
F : Fin (종료)
06. TCP 통신과정 (1) 연결 수립과정
(1) 연결 수립 과정 (3 Way Handshake)
* 클 > 서 : 요청 패킷 보냄 (반대 케이스 없음)
* 서 > 클 : 요청 받아들이는 패킷 보냄
* 클 > 서 : 최종적으로 수락하는 패킷 보냄
* 00 00 00 64 ( Sequence 번호) / 00 00 00 00 (Ack 번호) / 02 (syn 플래그 설정)
* 웹서버에서는 SYN + ACK 같이 세팅해서 보냄
* 클라이언트에서 최종적으로 수락하는 패킷 보내기.
* Ack 받는 쪽에서 줄때, 받은 Sequence Number +1 (S:100 => A: 101)
* 두번째 (S:2000_랜덤한 숫자 생성)
=> 클라이언트 입장에서 받은 Sequence Number +1 (A: 2001로 함)
=> ⭐ Sequence Number를 처음이 아닌경우, 받은 Ack 번호를 Sequence Number로 보
* 연결되고 나서는, 또 클라이언트가 서버에 요청 보냄
07. TCP 통신과정 (2) 데이터 송수신 과정
* TCP 이용한 데이터 통신
=> 단순히 TCP 패킷만 캡슐화해서 통신 x
=> 페이로드 포함한 패킷 주고 받을 때의 일정한 규칙
* 보낸 쪽에서 또 보낼때, SEQ 번호와 ACK 번호 그대로
* 받는 쪽에서 SEQ 번호 = ACK 번호
* 받는 쪽에서 ACK 번호 = SEQ 번호 + 데이터 크기
(페이로드가 있을때는 데이터의 크기가 들어감, 없으면 +1)
08. TCP 연결상태의 변화
(1) LISTEN
: 서버쪽에서 포트번호를 사용하고 있는 상태
=> 클라이언트의 요청을 듣고있는 상태 => 응답할 수 있도록
=> 서버는 항상 LISTEN 상태여야 함
(2) ESTABLISHED
: 3 Way Handshake가 끝나면 되는 상태 (통신 가능한 상태)
: 클라이언트와 서버 모두 ESTABLISHED 상태여야지 데이터를 주고받음
* TCP가 동기화하면서 주고받는데, 동기화한 내용만 출력해서 볼 수 있음
* 주고받은 패킷들을 간략하게 보여주는 그래프
끝.
출처 : 따라하면서 배우는 it
'네트워크' 카테고리의 다른 글
#06 네트워크 기초 : OSI 3계층(2) : IP, ICMP, IP 조각화 (WireShark) (0) | 2024.05.22 |
---|---|
#05 네트워크 기초 : OSI 3계층(1) : ARP (WireShark) (0) | 2024.05.22 |
#04 네트워크 기초 : OSI 7계층 : HTTP (0) | 2024.05.21 |
#02 네트워크 기초 : 패킷, 캡슐화, OSI 2계층 : 이더넷 (WireShark) (0) | 2024.05.20 |
#01 네트워크 기초 : 개념, tracert, WireShark (0) | 2024.05.20 |