'면접을 위한 CS 전공지식 노트' 책을 보며 공부한 내용입니다.
TCP/ IP 4계층 모델
- TCP/IP 4계층
- Application
- FTP, HTTP, SSH, SMTP, DNS
- 응용 프로그램이 사용되는 프로토콜 계층. 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 계층
- Transport
- TCP, UDP, QUIC
- 송신자와 수신자를 연결하는 통신 서비스 제공. 연결 지향 데이터 스트림을 지원하고, 신뢰성, 흐름 제어를 제공
- 애플리케이션 계층과 인터넷 계층 간의 중계 역할
- TCP
- 패킷 간의 순서를 보장. 신뢰성 있는 전송
- 3-way handshake로 클라이언트와 서버 간의 연결이 성립됨.
- ①SYN 단계: 클라이언트가 서버로 SYN 전송. SYN에는 클라이언트의 ISN이 담김
- ②SYN + ACK 단계: 클라이언트의 SYN를 서버가 수신. => ACK 전송. 그리고 SYN도 전송. SYN에는 서버의 ISN이 담김
- ③ACK 단계: 서버의 SYN을 클라이언트가 수신. 클라이언트는 ACK를 서버에 전송.
- 위 단계를 거쳐서 클라이언트와 서버 간의 연결이 성립된다.
- UDP는 이 단계를 거치지 않아 신뢰성을 보장하지 않는다.
- 4-way handshake로 클라이언트와 서버 간의 연결이 닫힘.
- ①클라이언트가 서버에게 FIN 전송. 클라이언트의 상태를 FIN_WAIT_1로 설정
- ②서버가 클라이언트의 FIN을 수신. 서버는 클라이언트에게 ACK를 전송. 서버의 상태를 CLOSE_WAIT로 설정. 클라이언트가 ACK를 받으면 클라이언트의 상태를 FIN_WAIT_2로 설정
- ③서버는 ACK 전송 후 일정 시간 후에 FIN 전송
- ④클라이언트는 서버의 ACK를 수신. 클라이언트의 상태를 TIME_WAIT로 설정. 다시 서버에 ACK를 전송. 서버는 클라이언트의 ACK를 수신하여 CLOSED 상태가 된다. 이후에 클라이언트는 일정 시간이 지난 후에 CLOSED 상태가 된다.
- TIME_WAIT 상태가 있는 이유는 지연 패킷이 발생할 경우를 대비한 것이다. 데이터 무결성을 유지하기 위해.
- UDP
- 패킷 간의 순서를 보장하지 않음. 전송하는 것에 집중.
- Internet
- IP, ARP, ICMP
- 장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지로 전송하기 위한 계층
- 패킷을 수신해야 할 상대의 주소를 지정하여 데이터를 전달
- Link (Network Access)
- 이더넷
- 전선, 광섬유, 무선 등으로 실질적으로 데이터 전
- Application
특정 계층이 변경되었을 때, 다른 계층에 영향을 주지 않는다.
- OSI 7계층
- TCP/IP의 Application 계층과 대응
- Application
- Presentation
- Session
- TCP/IP의 Transport 계층과 대응
- Transport
- TCP/IP의 Internet 계층과 대응
- Network
- TCP/IP의 Link(Network Access) 계층과 대응
- Data-Link
- Physical
- TCP/IP의 Application 계층과 대응
유선은 full-duplex(전이중화) 방식으로 양쪽 장치가 동시에 송수신이 가능하다. full-duplex 방식은 충돌이 일어나지 않아 충돌 방지 매커니즘이 필요 없다.
full-duplex 방식이 불가능했을 때에는 CSMA/CD를 통해 충돌에 대처했다.
- CSMA/CD
- 데이터를 보낸 이후에 충돌이 발생하면 일정 시간 이후 재전송하는 방식이다.
무선은 half-duplex(반이중화) 방식으로 양쪽 장치가 서로 통신 가능하지만, 동시에는 불가능하다.
=> 장치가 신호를 수신하기 시작하면 전송이 다 끝날 때까지 응답이 불가능하다. 충돌이 발생할 수도 있다. 그래서 CSMA/CA 방식을 사용한다.
- CSMA/CA
- 사전에 가능한 충돌 방지. 프레임을 보내기 전 0~2^k-1 사이에서 결정된 랜덤 상수 시간 만큼 대기 후에 전송.
- 만약에 전송했는데 충돌이 발생하면 k = k + 1이 됨.
- 반복하다가 k 값이 사전에 정한 Kmax를 넘으면 그 프레임은 버림.
728x90
'CS' 카테고리의 다른 글
2.4 IP 주소 (0) | 2024.09.06 |
---|---|
2.3 네트워크 기기 (0) | 2024.09.06 |
2.1 네트워크의 기초 (3) | 2024.08.30 |
1.2 프로그래밍 패러다임 (1) | 2024.08.01 |
1.1 디자인 패턴 (2) | 2024.07.31 |